Xargs के साथ ट्रैकिंग प्रगति


11

मैं कुछ इसी तरह के इनपुट मापदंडों के एक सेट पर एक कमांड निष्पादित करने के लिए xargs का उपयोग कर रहा हूं:

cat <someinput> | xargs -n 1 -P 5 <somecmd>

इनपुट फ़ाइल वास्तव में लंबी है और इसे चलाने में लंबा समय लगता है। इसलिए मैं सिर्फ दिखाने के लिए कमांड प्रॉम्प्ट का इंतजार कर रहा हूं। क्या इनपुट तर्कों की संख्या के लिए प्रगति पट्टी प्रदर्शित करने का एक तरीका है जो पूरा हो गया है?

मैंने 'बार' का उपयोग करने की कोशिश की, लेकिन मुझे हमेशा एक 'अनंत' थ्रूपुट मिला। ऐसा लगता है कि कमांड निष्पादित करने से पहले xargs पूरा इनपुट पढ़ता है।

http://i.stack.imgur.com/5Wsgx.gif

जवाबों:


13

यदि आपके पास जीएनयू समानांतर है तो आप चला सकते हैं:

cat <someinput> | parallel --bar -P 5 <somecmd>

जीएनयू समानांतर एक सामान्य समांतरक है और इससे एक ही मशीन पर या आपके द्वारा उपयोग की जाने वाली कई मशीनों पर समानांतर में नौकरी चलाना आसान हो जाता है।

यदि आपके पास 32 अलग-अलग कार्य हैं जिन्हें आप 4 सीपीयू पर चलाना चाहते हैं, तो समानांतर करने के लिए एक सीधा आगे का तरीका प्रत्येक सीपीयू पर 8 नौकरियों को चलाना है:

सरल समय-निर्धारण

जीएनयू समानांतर इसके बजाय एक नई प्रक्रिया को जन्म देता है जब एक खत्म हो जाता है - सीपीयू को सक्रिय रखना और इस तरह समय की बचत करना:

GNU समानांतर शेड्यूलिंग

स्थापना

एक व्यक्तिगत स्थापना के लिए रूट एक्सेस की आवश्यकता नहीं होती है। इसे 10 सेकंड में किया जा सकता है:

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

अन्य संस्थापन विकल्पों के लिए देखें http://git.savannah.gnu.org/cgit/parallel.git/tree/README

और अधिक जानें

और उदाहरण देखें: http://www.gnu.org/software/parallel/man.html

इंट्रो वीडियो देखें: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

ट्यूटोरियल के माध्यम से चलें: http://www.gnu.org/software/parallel/parallel_tutorial.html

समर्थन पाने के लिए ईमेल सूची के लिए साइन अप करें: https://lists.gnu.org/mailman/listinfo/parallel


1
बहुत बहुत धन्यवाद (उत्तर के लिए, और सॉफ्टवेयर लिखने के लिए!), यह बहुत अच्छा काम करता है!
ग्रेग सैडेत्स्की

9

आप pv का उपयोग कर सकते हैं:

cat <someinput> | pv -p -s sizeof_someimput | xargs -n 1 -P 5 <somecmd>

इसके साथ ही आपको पता चल जाएगा कि कुछ लोगों का पढ़ना कहां है, इसलिए आपको लगभग यह पता चल जाएगा कि कुछ लोगों का उपचार कहां है।


1
एक और लगातार उपयोग-मामला खोज के साथ संयोजन हो सकता है:FIND=( find "$DIR" -type f ) && ${FIND[@]} -print0 | pv -0lps $(${FIND[@]} | wc -l) | xargs -0 -I {} -P 5 <somecmd>
mxmlnkn

3

यदि आप प्रगति के सामान्य संकेत की तलाश कर रहे हैं तो सबसे सरल तरीका यह है कि आप जो कमांड करना चाहते हैं उसे करने से पहले सिर्फ प्रतिध्वनि करें।

उदाहरण: cat <someinput> | xargs -I{} sh -c 'echo {}; <somecmd>;'

-I{}{}वर्तमान स्ट्रिंग पर सेट किया जा रहा है

sh -cआपको कई कमांड निष्पादित करने की अनुमति देगा (ध्यान दें: पिछले कमांड सहित हर कमांड की आवश्यकता के बाद सेमी-कोलोन ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.