संक्षिप्त जवाब
GNU पैरेलल में अच्छे विकल्पों का एक सेट है जो इस तरह की चीजों को करना वास्तव में आसान बनाता है:
parallel --tagstring "{}:" --line-buffer tail -f {} ::: one.log two.log
उत्पादन होगा:
one.log: one.log की सामग्री यहां ...
one.log: one.log की सामग्री यहां ...
दो.लॉग: दो.लॉग की सामग्री यहां ...
दो.लॉग: दो.लॉग की सामग्री यहां ...
अधिक स्पष्टीकरण
- विकल्प
--tagstring=str
तार के साथ प्रत्येक उत्पादन लाइन टैग कर देता है str । से parallel
आदमी पेज :
- स्ट्रैस्ट्रिंग स्ट्रै
एक स्ट्रिंग के साथ टैग लाइनें। प्रत्येक आउटपुट लाइन के साथ तैयार किया जाएगा
str और TAB (\ t)। str में रिप्लेसमेंट स्ट्रिंग्स जैसे {} हो सकते हैं।
-tagstring को -u, --onall, andnonall का उपयोग करते समय अनदेखा किया जाता है।
सभी घटनाओं को {}
समानांतर के तर्कों द्वारा प्रतिस्थापित किया जाएगा, जो इस मामले में, लॉग फ़ाइल नाम हैं; यानी one.log
और two.log
(सभी तर्कों के बाद :::
)।
विकल्प --line-buffer
की आवश्यकता है क्योंकि कमांड का आउटपुट (जैसे tail -f one.log
या tail -f two.log
) मुद्रित किया जाएगा यदि वह कमांड समाप्त हो गया है। चूंकि tail -f
फ़ाइल वृद्धि का इंतजार करना होगा, इसलिए आउटपुट को लाइन के आधार पर प्रिंट करना आवश्यक है जो --line-buffer
ऐसा करता है। फिर से parallel
मैन पेज से :
-लाइन-बफर (अल्फा परीक्षण)
लाइन के आधार पर बफर आउटपुट। -ग्रुप आउटपुट रखेगा
एक साथ पूरी नौकरी के लिए। --ungroup आउटपुट को मिक्सअप करने देता है
आधी लाइन एक नौकरी से आ रही है और आधी लाइन से आ रही है
दूसरी नौकरी। -लाइन-बफर इन दोनों के बीच फिट बैठता है: जीएनयू समानांतर
पूरी लाइन प्रिंट करेगा, लेकिन लाइनों को मिलाने की अनुमति देगा
विभिन्न नौकरियों।
-v
पूंछ के लिए (क्रिया) विकल्प को देख सकते हैं । यह आपके पूछ से बिल्कुल मेल नहीं खा सकता है, लेकिन यह एक शुरुआत है।