xargs से आसान समानांतर प्रसंस्करण
नमस्ते, मैं अक्षम हूँ।
इतने लंबे समय के बाद पोस्ट करने के लिए मुझे खेद है, लेकिन मैं जीवित हूँ।
जब मैंने एक इस्तेमाल किया हुआ Ryzen 5 खरीदा, तो अप्रत्याशित रूप से उसके पिन मुड़े हुए थे, और केवल एक मेमोरी मॉड्यूल ही पहचाना गया, ऐसी घटनाएँ भी हुईं, लेकिन मैं किसी तरह जीवन यापन कर रहा हूँ।
मैंने सस्ते में एक और M-ATX AM4 मदरबोर्ड प्राप्त किया है, इसलिए मैं उस Ryzen चिप का उपयोग एक मिनी पीसी बनाने के लिए करने की सोच रहा हूँ।
उपयोगी xargs
xargs - विकिपीडिया
xargs, जो एक UNIX कमांड के रूप में मौजूद है, बहुत उपयोगी है।
शुरुआत में मैं इसका आदी नहीं था, लेकिन जितना अधिक आप इसका उपयोग करते हैं, उतनी ही अधिक उपयोगिता आपको मिलती है, और यह एक बहुत अच्छा कमांड है, आपको एक वन-लाइनर में एक साधारण लूप स्टेटमेंट लिखने की भी आवश्यकता नहीं है।
उपयोग का मामला
उदाहरण के लिए, मान लीजिए कि आपके पास yt-dlp के साथ सहेजने के लिए वीडियो हैं और वे प्रत्येक पंक्ति में मौजूद हैं।
url1
url2
url3
यदि आप इसे एक साथ समानांतर प्रसंस्करण के लिए पास करते हैं, तो CPU लोड बहुत अधिक हो जाएगा, इसलिए यदि आप इसे दो प्रक्रियाओं में चलाना चाहते हैं, तो आप इसे इस प्रकार लिख सकते हैं:
cat url-txt | xargs -I {} -P 2 yt-dlp {}
अविश्वसनीय रूप से, बस इतना करके आप इसे दो प्रक्रियाओं में संसाधित कर सकते हैं।
आइए इसका विश्लेषण करें
तो, यह कैसे काम करता है?
उपरोक्त निम्नलिखित के समान है:
yt-dlp url1 ; yt-dlp url2
yt-dlp url3
तंत्र के संदर्भ में, यह हर निष्पादन पर xargs को पास किए गए कमांड को निष्पादित करता है।
क्या यह read line करके इसे एक सरणी के रूप में संग्रहीत करने जैसा है?
यदि कोई विकल्प नहीं है तो क्या होगा?
यदि कोई विकल्प नहीं है, तो यह xargs को पास किए गए कमांड को एक साथ देता है।
चूंकि संगत कमांड सीमित हैं, मुझे लगता है कि -I विकल्प का उपयोग करना बेहतर है।
निम्नलिखित जैसे मामले में:
cat url-txt | xargs yt-dlp
इस मामले में, निम्नलिखित कमांड निष्पादित किया गया है:
yt-dlp url1 url2 url3
इसलिए, जितना संभव हो -I के साथ संसाधित करना बेहतर लगता है, लेकिन कुछ मामलों में बिना विकल्प के भी ठीक हो सकता है।
उपयोग का मामला 2
जब आप find कमांड के साथ केवल विशिष्ट फ़ाइल नामों को grep करना चाहते हैं, या sed करना चाहते हैं, तब भी यह उपयोगी है।
find . -name "testfile" | xargs -I {} grep "return 0" {}
इस तरह, केवल विशिष्ट फ़ाइलों को grep करना इतने संक्षिप्त विवरण के साथ संभव है।
तो, आज के लिए बस इतना ही।
अगली बार फिर मिलेंगे।