बैश में, disown
स्वयं द्वारा जारी की गई कमांड सक्रिय जॉब टेबल से पृष्ठभूमि वाली (थ्रू ) bg
या &
प्रक्रियाओं को हटा देगी , और लॉगआउट पर साइटश प्राप्त नहीं करने के लिए उन्हें चिह्नित करेगी ।
आप एक या एक से अधिक नौकरियों को पास करने के लिए भी दे सकते हैं, जैसे disown 1 3
। disown -h
आप तालिका में नौकरियों रखना चाहते हैं झंडा उपयोगी है, लेकिन अभी भी लॉग आउट करने पर SIGHUP नहीं।
आप jobs
कमांड जारी करके जॉब टेबल देख सकते हैं । एक सफल पृष्ठभूमि के बाद, यह दिखाएगा [1]+ command &
। नौकरी छोड़ने के बाद, उसे अब नौकरी की तालिका में प्रदर्शित नहीं किया जाना चाहिए, और अब लॉगआउट पर नहीं मारा जाना चाहिए। तुम अब भी के माध्यम से प्रक्रिया को देख सकते हैं ps ux
, top
और अन्य प्रक्रिया देखने उपयोगिताओं।
नौकरी छूट जाने के बाद, आप इसे स्वाभाविक रूप से समाप्त करने के लिए प्रतीक्षा कर सकते हैं या kill
इसे रोकने के लिए पीआईडी के माध्यम से एक संकेत भेज सकते हैं।
चूँकि बैश सिर्फ नौकरी समाप्त करने की सूची से नौकरी को हटा रहा है और आपके टर्मिनल के स्टडआउट और फाइलर के लिए फ़ाइल हैंडल अभी भी खुले हैं, आप तब तक नौकरी से आउटपुट प्राप्त करना जारी रखेंगे जब तक आपका टर्मिनल डिवाइस बंद नहीं होता (जब आप लॉग आउट करते हैं) ।
उदाहरण:
# we start a command in the background
$ cat /dev/urandom > test &
[1] 18533
# we see our command is still running
$ jobs
[1]+ Running cat /dev/urandom > test &
# we disown the backgrounded job
$ disown 1
# notice it is no longer in the job table
$ jobs
मैं आमतौर पर केवल तभी उपयोग करता disown
हूं जब मैं संभावित रूप से लंबे समय तक चलने वाली कमांड चलाता हूं जैसे कि rsync
या cp
बाद में यह तय करता हूं कि मुझे इसे समाप्त किए बिना लॉग आउट करने की आवश्यकता है। यदि आप जानते हैं कि आप एक कमांड चलाने जा रहे हैं और लॉग आउट कर रहे हैं, तो आप आउटपुट को पाइप से कैप्चर कर सकते हैं या tee
इसे किसी फाइल में डाल सकते हैं, इसके साथ इसे चला सकते हैं nohup
, या इसे चला सकते हैं screen
(जो आपको कमांड के स्वामित्व को फिर से लेने / बाद में समाप्त करने की अनुमति देता है) )।
उदाहरण:
# capture stdout and stderr to separate logs
cat /dev/urandom >stdout.log 2>stderr.log
# capture stdout and stderr to the same log, and display to stdout as well
cat /dev/urandom 2>&1 | tee output.log
# run a command under nohup (doesn't require a disown or job control support)
nohup cat /dev/urandom </dev/null