एक सहकर्मी के साथ लंबे समय तक चर्चा के बाद यह पूछना, मैं वास्तव में यहाँ स्पष्टीकरण चाहूंगा।
मैं एक पृष्ठभूमि प्रक्रिया शुरू करता हूं, या तो &
कमांड लाइन पर " " जोड़कर या इसे रोककर CTRL-Z
और इसे " bg
" के साथ पृष्ठभूमि में फिर से शुरू करके । फिर मैं लॉग आउट हो गया।
क्या होता है?
हमें पूरा यकीन था कि इसे SIGHUP द्वारा मार दिया जाना चाहिए था, लेकिन ऐसा नहीं हुआ; फिर से लॉग इन करने पर, प्रक्रिया खुशी से चल रही थी और pstree
दिखाया गया कि यह "द्वारा अपनाया गया" है init
।
क्या यह अपेक्षित व्यवहार है?
लेकिन फिर, अगर यह है, तो nohup
कमांड का उद्देश्य क्या है? ऐसा लगता है कि इस प्रक्रिया को वैसे भी नहीं मारा जा रहा है, इसके साथ या इसके बिना ...
संपादित करें 1
कुछ और विवरण:
- कमांड को SSH सत्र से लॉन्च किया गया था, न कि भौतिक कंसोल से।
- कमांड को बिना
nohup
और / या लॉन्च किया गया था&
; इसे तब निलंबित कर दिया गया थाCTRL-Z
और इसके साथ पृष्ठभूमि में फिर से शुरू किया गया थाbg
। - Ssh सत्र ड्रॉप नहीं हुआ । एक वास्तविक लॉगआउट था ("
exit
" कमांड)। - प्रक्रिया एक
scp
फाइल कॉपी ऑपरेशन थी। - फिर से लॉग इन करने पर,
pstree
प्रक्रिया चल रही है और बच्चे के होने का पता चलता हैinit
।
संपादित करें 2
प्रश्न को और अधिक स्पष्ट रूप से बताने के लिए: एक प्रक्रिया को पृष्ठभूमि में रखना (उपयोग करना &
या करना bg
) इसे अनदेखा कर देगा SIGHUP
, ठीक वैसे ही जैसे nohup
कमांड करता है?
संपादित करें 3
मैं स्वयं एक भेजने की कोशिश की SIGHUP
करने के लिए scp
: यह बाहर निकल गया, तो यह निश्चित रूप से संकेत की अनदेखी नहीं करता है।
फिर मैंने इसे फिर से लॉन्च करने की कोशिश की, इसे पृष्ठभूमि में रखा और लॉग ऑफ कर रहा था: इसे "अपनाया" द्वारा init
रखा गया और चालू रखा, और मैंने इसे वापस लॉग ऑन करते समय पाया।
मैं अब काफी हैरान हूं। ऐसा लगता है कि SIGHUP
सभी अप-लॉगिंग बंद पर कोई भेजा नहीं गया था।
1>/dev/null 2>&1
बैश वगैरह के लिए?