इनपुट के बिना स्क्रिप्ट चलाने के लिए समानांतर का उपयोग करना


10

मैं एक स्क्रिप्ट के कई उदाहरणों को जीएनयू समानांतर के साथ चलाने की कोशिश कर रहा हूं, लेकिन स्क्रिप्ट में कोई तर्क नहीं है।

अगर मैं सिर्फ 'समानांतर foo.sh' पर अमल करता हूं तो मुझे यह मिलता है:

parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.

जवाबों:


10

मान लें कि आप दस बार चलाना चाहते हैं, तो यह सिंटैक्स काम करेगा:

parallel -n0 foo.sh ::: {1..10}

parallelकुछ लंबाई के इनपुट अनुक्रम की आवश्यकता है ( ::: {1..10}) और आपको इनपुट अनुक्रम की सामग्री को अनदेखा करने की आवश्यकता है ( -n0), आपको केवल इसकी लंबाई के बारे में परवाह है।

आपकी मूल कमांड:, parallel foo.shयह इंगित करने के लिए कोई इनपुट अनुक्रम नहीं है कि आप कितनी समानता चाहते हैं। गुप्त चेतावनी आपको बता रही है कि parallelइनपुट अनुक्रम के लिए टर्मिनल सुनना शुरू करने जा रहा है, और यह संभवतः वह नहीं है जो आप चाहते हैं।

यहाँ ट्यूटोरियल उदाहरण है:

seq 10 | parallel -n0 my_command my_args

यह काम किस प्रकार करता है:

  • parallelहमेशा कहीं से एक इनपुट अनुक्रम लेता है। यह एक इनलाइन स्पेस-सीमांकित अनुक्रम हो सकता है जो :::एक फ़ाइल या फाइललाइक स्रोत जैसे पाइप से एक न्यूलाइन-सीमांकित अनुक्रम से पहले होता है । इस उदाहरण में इनपुट अनुक्रम एक पाइप से है।
  • seq 10 एक से दस तक अंकों का एक नया-सीमांकित अनुक्रम पैदा करता है।
  • -n0विकल्प इनपुट अनुक्रम में मूल्यों की अनदेखी करने के लिए समानांतर में बताता है। हम सभी के बारे में परवाह करते हैं अनुक्रम की लंबाई है, इसकी सामग्री नहीं। हालाँकि अंकों का उपयोग नहीं किया जाता है, फिर भी कमांड दस बार निष्पादित होगी।

एक और उदाहरण:

parallel -n0 echo -n 'x' ::: {1..5}

यह काम किस प्रकार करता है:

  • इनपुट अनुक्रम इनलाइन है।
  • {1..5} एक से पांच तक अंकों का एक अंतरिक्ष सीमांकित अनुक्रम पैदा करता है।
  • -n0अनुक्रम मानों को अनदेखा करता है (और हम 'x'इसके बजाय हर बार स्ट्रिंग को प्रतिध्वनित करते हैं ।)
  • आउटपुट: xxxxx

से तुलना:

parallel echo -n ::: {1..5}

यह काम किस प्रकार करता है:

  • इनपुट अनुक्रम इनलाइन है।
  • {1..5} एक से पांच तक अंकों का एक अंतरिक्ष सीमांकित अनुक्रम पैदा करता है।
  • इनपुट अनुक्रम से प्रत्येक मान का उपयोग तर्क के रूप में किया जाता है echo। आदेश की गारंटी नहीं है।
  • आउटपुट: 43215। कोई भी आदेश हो सकता है।

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