आपके पहले आदेश के साथ एक समस्या यह है कि आप stdout को जहाँ आप (यदि आपने टिप्पणी में सुझाए अनुसार $ a को बदल दिया है) के लिए stderr को रीडायरेक्ट करते हैं और फिर, आपने कुछ लॉग फ़ाइल में stdout को पुनर्निर्देशित किया, लेकिन वह पुनर्निर्देशित stderr के साथ नहीं खींचता है । आपको इसे दूसरे क्रम में करना होगा, पहले जहां आप जाना चाहते हैं, वहां स्टैडआउट भेजें, और उसके बाद स्टडर को पते पर भेज दें
some_cmd > some_file 2>&1 &
और फिर आप इसे पृष्ठभूमि पर भेजने के लिए & पर फेंक सकते हैं। नौकरियों को jobs
कमांड से एक्सेस किया जा सकता है । jobs
आपको चल रही नौकरियां दिखाएंगे, और उन्हें नंबर देंगे। आप बाद में% का उपयोग करते हुए नौकरियों के बारे में बात कर सकते हैं जैसे संख्या kill %1
या तो।
इसके अलावा, एंड के बिना आप कमांड को सस्पेंड कर सकते हैं Ctrlz, bg
इसे बैकग्राउंड fg
में लाने के लिए कमांड का उपयोग कर सकते हैं और इसे अग्रभूमि में वापस ला सकते हैं। jobs
कमांड के साथ संयोजन में , यह शक्तिशाली है।
आदेश लिखने के बारे में उपरोक्त भाग स्पष्ट करने के लिए। मान लें कि stderr का पता 1002 है, stdout का पता 1001 है, और फ़ाइल 1008 है। कमांड दाईं ओर बाईं ओर पढ़ती है, इसलिए पहली चीज़ 2>&1
जो आपके अंदर दिखाई देती है, जो stderr को 1001 पते पर ले जाती है, फिर यह देखती है > file
कि यह stdout को 1008 पर ले जाती है लेकिन 1001 पर stderr रहता है। यह 1001 की ओर इशारा करते हुए सब कुछ नहीं खींचता है और इसे 1008 पर ले जाता है, लेकिन बस stdout को संदर्भित करता है और इसे फ़ाइल में ले जाता है।
दूसरे तरीके के चारों ओर, यह स्टैडआउट को 1008 तक ले जाता है, और फिर स्टैडर को उस बिंदु पर ले जाता है, जहां स्टडआउट 1008 को भी इंगित कर रहा है। इस तरह से दोनों सिंगल फाइल को इंगित कर सकते हैं।
2>$1
शायद माना जाता है2>&1
।