मेरे पास बड़ी संख्या में बड़ी फाइलें (सैकड़ों फाइलें, प्रत्येक एमबी के सैकड़ों) हैं जिन्हें मुझे फ़िल्टर करने और उन्हें बदलने के लिए कई कार्यक्रमों के माध्यम से पाइप करने की आवश्यकता है। मैं कई सीपीयू कोर का लाभ ले रहा हूं, इसलिए मैं प्रत्येक फ़ाइल पर एक ही पाइप के कई उदाहरण चला रहा हूं (एक सौ कोर तक हो सकता है, और पाइप के हिस्से के रूप में एसएचएस का उपयोग कर सकता है, मामले में कोई फर्क नहीं पड़ता है जवाब देने के)। मैं प्रत्येक पाइप की निगरानी करना चाहता हूं, और उसके pv
लिए उपयोग कर रहा हूं । यहाँ मेरे पास एक न्यूनतम उदाहरण है:
$ pv file-001.gz | gunzip | xz > file-001.xz
1.58GB 0:00:02 [ 713MB/s] [=================================>] 100%
वास्तव में, मैं पाइप में कई अन्य चीजें भी करता हूं, जिसमें ssh पर अन्य मशीनों को डेटा पास करना और उन मशीनों पर फिल्टर के माध्यम से पाइपिंग करना शामिल है, लेकिन पाइप हमेशा मुख्य होस्ट पर एक नई फ़ाइल में पुनर्निर्देशन के साथ समाप्त होगा। इसके अलावा, पाइप में किसी भी चरण को पूरे डेटा सेट की आवश्यकता नहीं है; वे एक लाइन-बाय-लाइन या चंक-बाय-चंक आधार पर काम कर सकते हैं।
वर्तमान में, मुझे पाइप के प्रत्येक उदाहरण के लिए एक अलग टर्मिनल विंडो की आवश्यकता है। मैं जो करना चाहता हूं, वह एकल टर्मिनल / शेल में पाइप के एन समानांतर उदाहरणों को शुरू करना है, और स्वयं की लाइन पर प्रत्येक पीवी उदाहरण से आउटपुट प्राप्त करना है। कुछ इस तरह:
1.48GB 0:00:54 [ 704MB/s] [===============================> ] 97% ETA 00:00:06
1.58GB 0:01:00 [ 713MB/s] [=================================>] 100%
0.75GB 0:00:31 [ 709MB/s] [================> ] 50% ETA 00:00:29
एन के लिए मूल्य उन पंक्तियों की संख्या होगी जिन्हें मैं एक टर्मिनल विंडो में फिट कर सकता हूं, 3-50 या तो कहते हैं। प्रगति रिपोर्ट का सटीक प्रारूप महत्वपूर्ण नहीं है, जब तक कि इसमें गति, प्रतिशत, किया हुआ समय और अनुमानित शेष समय शामिल हैं। यह भी महत्वपूर्ण नहीं है कि मैं उपयोग करता हूं pv
, जब तक मैं इसे आसानी से स्थापित कर सकता हूं या बस सादे खोल (बाश, अधिमानतः) का उपयोग करना ठीक है। हालांकि, जो महत्वपूर्ण है, वह यह है कि विधि कभी-कभी टूटी हुई पाइप को संभाल सकती है यदि किसी कारणवश पाइप का एक हिस्सा दुर्घटनाग्रस्त हो जाता है। मैं हर बार एक नौकरी खत्म (सफलतापूर्वक या नहीं) नई नौकरियां शुरू करना चाहूंगा और अभी भी अप्रमाणित फाइलें बाकी हैं।
इसे कैसे करना है इस पर कोई आइडिया?
ध्यान दें कि मैंने पहले ही GNU समानांतर की कोशिश की है , लेकिन इसकी ssh विशेषताएँ यह मानती हैं कि प्रत्येक इनपुट फ़ाइल को पहले दूरस्थ होस्ट में स्थानांतरित किया गया, फिर संसाधित किया गया, फिर परिणाम वापस स्थानांतरित कर दिया गया, जो कि डेटा की मात्रा के कारण मैं बचना चाहता हूं और प्रत्येक प्रसंस्करण नोड पर सीमित मात्रा में स्थान।