संक्षेप में
के साथ &और disownआप प्रक्रिया के पीआईडी [ 1 ] को नहीं बदलते हैं।
यदि आप इसे ps -p <YOURPID>आउटपुट में नहीं देखते हैं , तो यह अधिक चलने वाला नहीं है।
आप कर सकते हैं पर-जाँच इसके साथ एक अतिरिक्त echo $? [ 2 ] के बाद ps(या kill) आदेश, जाँच करता है, तो प्रोग्राम एक निकास कोड से अलग के साथ बाहर निकल जाता है 0(आमतौर पर 1)।
आपकी आज्ञाओं को समझना।
बैकग्राउंड : जब आप कमांड को फाइनल करते हैं &तो आप इसे बैकग्राउंड में भेजते हैं।
इस का मतलब है कि:
- यह आपके शेल की नौकरी सूची में मौजूद है (आपके उदाहरण में संख्या है
[1]और आप इसे इस रूप में संदर्भित कर सकते हैं %1; (कमांड का प्रयास करें jobs)।
- आप इसे अग्रभूमि में और पृष्ठभूमि में
fgऔर साथ ला सकते हैं bg।
यह (अभी भी) "स्वामित्व" (माता-पिता से जुड़ा हुआ) शेल है: यदि शेल को एक SIGHUPसंकेत मिलता है , तो यह SIGHUPप्रक्रिया को भी एक संकेत भेजेगा ।
$ sleep 1h &
[1] 10795
$ jobs
[1]+ running sleep 1h &
$ ps -l -p 10795
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 10795 8380 0 80 0 - 3107 hrtime pts/57 00:00:00 sleep
Disown : कमांड के साथ disownआप शेल की जॉब लिस्ट से जॉब को हटा देते हैं, लेकिन आप इसके PID को नहीं बदलते हैं।
$ disown
$ jobs
# <---- No jobs
$ ps -l -p 10795
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 10795 8380 0 80 0 - 3107 hrtime pts/57 00:00:00
उसी पीपीआईडी पर ध्यान दें (शेल अभी भी मौजूद है)।
अब हम खोल को मारते हैं।
$ kill 8380 # Here we kill the shell
$ ps -l -p 10795
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 10795 5339 0 80 0 - 3107 hrtime pts/57 00:00:00 sleep
एक और है PPID, 5339, कि का एक और मंगलाचरण के साथ ps, ps -p 5339, आप एक होने के लिए पता चल जाएगा initउदाहरण:
$ ps -p 5339
PID TTY TIME CMD
5339 ? 00:02:20 init
pstree: जल्दी रास्ता।
आप pstreeअधिक तेज़ी से देख सकते हैं ।
इससे पहले कि disownऔर मारने बैश कमांड:
$ pstree -s -p 10795
init(1)───lightdm(1199)───lightdm(5259)───bash(8380)───sleep(10795)
मारdisown और मार के बाद :
$ pstree -s -p 10795
init(1)───lightdm(1199)───lightdm(5259)───init(5339)───sleep(10795)
नोट: निश्चित रूप से आपके मामले में सभी PID अलग-अलग होंगे ...