मैं कुछ ऐसी चीज़ों की तलाश कर रहा हूँ जिन पर मुझे संदेह नहीं है: कमांड लाइन से उपयोग करने के लिए एक नॉन-ब्लॉकिंग बफ़र नाम का पाइप (फिडो)। क्या वहां ऐसी कोई चीज है?
यहां उपयोग का मामला है: मान लीजिए कि मेरे पास एक ऐसी प्रक्रिया है जो पृष्ठभूमि में लंबे समय तक चलने वाली है और बहुत सारे आउटपुट के लिए है stdout
। मैं वास्तव में आउटपुट के बारे में परवाह नहीं करता हूं और इसे स्टोर नहीं करना चाहता हूं (शायद मेरे पास पर्याप्त जगह नहीं है), लेकिन मैं समय-समय पर "ड्रॉप" करना चाहता हूं और इसका पालन कर रहा हूं, फिर बाहर छोड़ दें और इसे अपना काम करने के लिए छोड़ दें। इसलिए मैं इसके आउटपुट को इस सैद्धांतिक बफर, नॉन-ब्लॉकिंग पाइप और फिर समय-समय पर टैप करना चाहता हूं।
इसलिए मूल रूप से मैं इस तरह शुरू करना चाहता हूं ( 10M
बफर का आकार होना):
mkmagicfifo magicfifo 10M
spewingprocess > magicfifo &
... और समय-समय पर यह देखने के लिए कि क्या चल रहा है ...
tail -f magicfifo
... सभी आउटपुट को magicfifo
स्टोर किए बिना (इसलिए, एक सामान्य फ़ाइल नहीं), और इसके बिना स्प्यूइंग प्रक्रिया को अवरुद्ध करने पर यह भर जाता है और टैप नहीं किया जाता है (इसलिए, काफी सामान्य नाम का पाइप नहीं)।
मुझे नहीं लगता कि समाधान शामिल हैं tail
या prune
इसे करेंगे (ठीक है, मैं इसमें शामिल एक समाधान के बारे में सोच सकता हूं tail
), क्योंकि tail
अभी भी आवश्यकता होगी कि मैं सभी डेटा को कहीं स्टोर करूं (यदि मैं इसे देखना चाहता हूं और इसे देखने से बाहर छोड़ना चाहता हूं), और prune
फ़ाइल को फिर से लिखना होगा, संभवतः (मैं मानता हूँ कि मैंने कोशिश नहीं की है / यह साबित नहीं किया है) सभी आउटपुट उत्पन्न करने की प्रक्रिया के पुनर्निर्देशन को तोड़ना।
मुझे उम्मीद है कि मैं ऐसा करने के लिए कुछ उपयोगिता लिख सकता हूं, लेकिन * nix में फ़ाइलों और पाइपों के बहुत सारे ठंडे पहलू हैं और इस तरह, मैं अभी मदद नहीं कर सकता लेकिन लगता है कि यह मौजूद है और मुझे अभी इसके बारे में पता नहीं है।
तो: क्या ऐसी कोई बात है, और यदि ऐसा है तो क्या है?