संक्षेप में
के साथ &
और 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 अलग-अलग होंगे ...