समवर्ती कमांड चलाने के लिए आप &
कमांड सेपरेटर का उपयोग कर सकते हैं ।
~$ command1 & command2 & command3
यह शुरू होगा command1
, फिर इसे पृष्ठभूमि में चलाता है। साथ ही command2
। फिर यह command3
सामान्य रूप से शुरू होता है।
सभी कमांड के आउटपुट को एक साथ जोड़ा जाएगा, लेकिन अगर यह आपके लिए कोई समस्या नहीं है, तो इसका समाधान होगा।
यदि आप बाद में आउटपुट पर एक अलग नज़र रखना चाहते हैं, तो आप प्रत्येक कमांड के आउटपुट को पाइप कर सकते हैं tee
, जिससे आप आउटपुट को मिरर करने के लिए एक फ़ाइल निर्दिष्ट कर सकते हैं।
~$ command1 | tee 1.log & command2 | tee 2.log & command3 | tee 3.log
आउटपुट शायद बहुत गन्दा होगा। इसका मुकाबला करने के लिए, आप प्रत्येक कमांड के आउटपुट को एक उपसर्ग का उपयोग करके दे सकते हैं sed
।
~$ echo 'Output of command 1' | sed -e 's/^/[Command1] /'
[Command1] Output of command 1
इसलिए यदि हम सबको एक साथ रखते हैं:
~$ command1 | tee 1.log | sed -e 's/^/[Command1] /' & command2 | tee 2.log | sed -e 's/^/[Command2] /' & command3 | tee 3.log | sed -e 's/^/[Command3] /'
[Command1] Starting command1
[Command2] Starting command2
[Command1] Finished
[Command3] Starting command3
यह एक उच्च आदर्श संस्करण है जिसे आप शायद देखने जा रहे हैं। लेकिन इसका सबसे अच्छा मैं अभी सोच सकता हूँ।
यदि आप एक बार में उन सभी को रोकना चाहते हैं, तो आप बिल्ड का उपयोग कर सकते हैं trap
।
~$ trap 'kill %1; kill %2' SIGINT
~$ command1 & command2 & command3
यह निष्पादित करेगा command1
और command2
पृष्ठभूमि command3
में और अग्रभूमि में, जो आपको इसे Ctrl+ से मारने की सुविधा देता है C।
जब आप अंतिम प्रक्रिया को Ctrl+ Cके साथ मारते हैं, तो kill %1; kill %2
कमांड निष्पादित होते हैं, क्योंकि हमने उनके निष्पादन को एक इंट्रुप्ट सिगनल के रिसेप्शन के साथ जोड़ा, जो कि Ctrl+ दबाकर भेजी गई चीज है C।
वे क्रमशः 1 और 2 की पृष्ठभूमि प्रक्रिया (आपके command1
और command2
) को मारते हैं । जाल को हटाने के लिए मत भूलना, के बाद आप अपने आदेश का उपयोग कर समाप्त कर रहे हैं trap - SIGINT
।
एक कमांड का पूरा राक्षस:
~$ trap 'kill %1; kill %2' SIGINT
~$ command1 | tee 1.log | sed -e 's/^/[Command1] /' & command2 | tee 2.log | sed -e 's/^/[Command2] /' & command3 | tee 3.log | sed -e 's/^/[Command3] /'
बेशक, आप स्क्रीन पर एक नजर डाल सकते हैं । यह आपको अपने कंसोल को जितने चाहें अलग कंसोल में विभाजित करने देता है। तो आप सभी कमांड को अलग से देख सकते हैं, लेकिन एक ही समय में।