आपके पहले आदेश के साथ एक समस्या यह है कि आप 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।