से बाहर निकल गया है तो मेरे पास मूल प्रक्रिया को कैसे पता चलाना है मेरे पास अग्रभूमि में एक बाल प्रक्रिया चल रही है और उसके पिता पहले ही बाहर निकल चुके हैं।अगर बच्चे पृष्ठभूमि में लॉन्च किया गया है और माता-पिता पहले से ही
proc/$pid/stat
फ़ाइल किसी भी अधिक माता पिता पीआईडी शामिल नहीं करता है, तो माता-पिता पहले से ही बाहर निकल गया है और यह मूल माता पिता पीआईडी के बजाय 1 प्रदर्शित
linux$cat /proc/6267/stat
6267 (test3.sh) S 1 6265 ......
# ^
# |
# I expected to get the origin parent pid but I get 1
इस व्यवहार को पुनः करने के लिए जल्दी से हम निम्न स्क्रिप्ट का उपयोग कर सकते
test2.sh
#!/bin/sh
echo "test2=$$"
./test3.sh &
test3.sh
#!/bin/sh
echo "test3=$$"
sleep 1000
निष्पादन:
linux$ ./test2.sh
test2=6318
test3=6319
linux$ ps aux | grep test
6319 root 1484 S {test3.sh} /bin/sh ./test3.sh
linux$ cat /proc/6319/stat
6319 (test3.sh) S 1 6318 2138 34816 6.......
हां, अनाथ प्रक्रियाएं 'init' (pid '1') द्वारा" अपनाई गई "हैं। यह डिज़ाइन द्वारा है, और मेरे ज्ञान के लिए मूल प्रक्रिया समाप्त हो जाने के बाद मूल मूल पिड को पुनर्प्राप्त करने का कोई तरीका नहीं है। –
... और यदि आपने एक साथ एक साथ जोड़ दिया है, तो अंततः पिड्स को पुनर्नवीनीकरण किया जाता है, ताकि संख्या का मतलब यह न हो कि इसका मतलब क्या है। – jthill