पुनर्निर्देशन का उपयोग करने वाले शेल कमांड को पूरी तरह से कैसे कांटा जाए


13

मैंने वर्षों में काफी कुछ शेल स्क्रिप्ट लिखी हैं (लेकिन मैं निश्चित रूप से एक sysadmin नहीं हूं) और ऐसा कुछ है जो मुझे हमेशा परेशान करता है: मैं बैश स्क्रिप्ट से बैकग्राउंड में हैंगअप करने के लिए शेल कमांड कैसे ले सकता हूं ?

उदाहरण के लिए अगर मेरे पास यह है:

command_which_takes_time input > output

मैं "नोह" और यह कैसे कांटा सकता हूं?

निम्नलिखित मैं क्या चाहता हूँ करने के लिए प्रतीत नहीं होता है:

nohup command_which_takes_time input > output &

मैं जिस वाक्य-विन्यास की तलाश कर रहा हूं, वह क्या है और मैं क्या नहीं समझ रहा हूं?

जवाबों:


13

इसके साथ सबस्क्रिप्शन बनाने का प्रयास करें (...):

( command_which_takes_time input > output ) &

उदाहरण:

~$ ( (sleep 10; date) > /tmp/q ) &
[1] 19521
~$ cat /tmp/q # ENTER
~$ cat /tmp/q # ENTER
(...) #AFTER 10 seconds
~$ cat /tmp/q #ENTER
Wed Jan 11 01:35:55 CET 2012
[1]+  Done                    ( ( sleep 10; date ) > /tmp/q )

18

आपको प्रयास करना चाहिए setsid(1)। इसका उपयोग करें जैसे आप उपयोग करेंगे nohup:

setsid command_which_takes_time input > output

यह ( setsid(2)मैनपेज के अनुसार ), एक fork(2), _exit(2)मूल प्रक्रिया का, फिर बच्चा प्रक्रिया setsid(2)एक नया प्रक्रिया समूह (सत्र) बनाने के लिए कहता है।

आप इसे लॉग आउट करके नहीं मार सकते, और यह बैश जॉब कंट्रोल शेबंग का हिस्सा नहीं है। सभी इरादों और उद्देश्यों के लिए, यह एक उचित डेमॉन है।


4

वहाँ disownबैश builtin आदेश:

[1] 9180
root@ntb1:~# jobs
[1]+  Running                 sleep 120 &
root@ntb1:~# disown
root@ntb1:~# jobs
... no jobs, disowned
root@ntb1:~# ps aux | grep sleep | grep -v grep
root      9180  0.0  0.0   4224   284 pts/0    S    17:55   0:00 sleep 120
... but the sleep still runing
root@ntb1:~#

अव्यवस्था के बाद , नौकरी आपके शेल से विस्थापित है (इसलिए आप लॉगआउट भी कर सकते हैं) और यह अभी भी समाप्त होने तक चल रहा है।

1 देखें jobsआदेश सूचीबद्ध sleepहालांकि 2 jobsके बाद अस्वीकार नहीं किया। लेकिन psहम उपयोग करके देख सकते हैं कि नौकरी अभी भी चल रही है।



-2

यह काम करेगा (कोई अतिरिक्त स्थान टाइप न करें):

command &>output.file

1
ऐसा लगता है कि सवाल का कोई लेना देना नहीं है, क्योंकि यह कांटा नहीं है या इसके बराबर हासिल नहीं करता है nohup
डैन गेट्ज़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.