एक सहकर्मी के साथ लंबे समय तक चर्चा के बाद यह पूछना, मैं वास्तव में यहाँ स्पष्टीकरण चाहूंगा।
मैं एक पृष्ठभूमि प्रक्रिया शुरू करता हूं, या तो &कमांड लाइन पर " " जोड़कर या इसे रोककर 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बैश वगैरह के लिए?