जवाबों:
उपयोग ps -o ppid=
ps -o ppid= 2072रिटर्न 2061, जिसे आप आसानी से स्क्रिप्ट आदि में उपयोग कर सकते हैं, ps -o ppid= -C fooकमांड के साथ प्रक्रिया का पीपीआईडी देता है foo। तुम भी पुराने जमाने का उपयोग कर सकते ps | grep: ps -eo ppid,comm | grep '[f]oo'।ps -f 2072रिटर्न
UID PID PPID C STIME TTY स्टेट टाइम CMD izx 2072 2061 0 07:16? S 0:00 / usr / lib / pulseaudio / नाड़ी / gconf- सहायक
pstreeसंबंध है: pstree -s -p 2072:
init (1) ───pulseaudio (2061) ───gconf-हेल्पर (2072)
ppid= पिड के बाद लेकिन इससे पहले की जगह आवश्यक प्रतीत होती है। यदि मैंने इसे छोड़ दिया तो मुझे अलग परिणाम मिले।
echo $PPID
यदि आपको इस पैरेंट से कमांड की आवश्यकता है:
cat /proc/$PPID/comm
अगर आपको पूरी कमांड लाइन की जरूरत है (सभी विकल्पों के साथ):
cat /proc/$PPID/cmdline
$PPID शेल द्वारा परिभाषित किया गया है, यह मूल प्रक्रिया का PID है/proc/, आपके पास प्रत्येक प्रक्रियाओं के पीआईडी के साथ कुछ डायर हैं। फिर, यदि आप cat /proc/$PPID/comm, आप पीआईडी के कमांड नाम को प्रतिध्वनित करते हैंPPIDपोसिक्स मानक के हिस्से के रूप में परिभाषित किया गया है, इसलिए किसी भी पोसिक्स आज्ञाकारी शेल को उचित रूप से स्थापित किया जाना चाहिए। Pubs.opengroup.org/onlinepubs/9699919799/utilities/… पर
pstreeकमांड नाम से उपयोग करनाका उपयोग करते हुए pstreeबच्चे प्रक्रिया नाम से खोज और माता-पिता, दादा-दादी और बच्चे प्रक्रिया के किसी भी बच्चों के साथ प्रक्रिया ID (पीआईडी) प्राप्त कर सकते हैं आप:
$ pstree -hp | grep sleep
|-cron(763)---cron(795)---sh(839)---display-auto-br(841)---sleep(8414)
इस मामले sleepमें चाइल्ड कमांड है और यह पीआईडी है 8414। यह मूल आईडी 841 है और इसे कहा जाता है display-auto-brightness। दादा-दादी एक शेल ( sh) है जिसमें एक प्रक्रिया आईडी है 839। महान-दादा-दादी cronएक प्रक्रिया आईडी के साथ है 795। महान-परदादा भी cronएक प्रक्रिया आईडी के साथ है 763।
यदि आप sleepनाम के बजाय प्रोसेस आईडी द्वारा खोजना चाहते हैं, तो आप इसका उपयोग कर सकते हैं:
$ pstree -hp | grep 14653
|-cron(763)---cron(795)---sh(839)---display-auto-br(841)---sleep(14653)
नोटिस की sleepप्रक्रिया आईडी बदल गई 14653। अभिभावक (पीआईडी 841) 1 मिनट के लिए सोता है, एक दूसरे विभाजन के लिए उठता है और फिर एक नई sleepकमांड शुरू करता है जिसे एक नई प्रक्रिया आईडी मिलती है। यह एक और कारण है कि sleepप्रोसेस आईडी द्वारा खोजना आसान है।
इस कोड से लिया गया था: सूर्योदय और सूर्यास्त के आधार पर प्रदर्शन चमक को स्वचालित रूप से समायोजित करें और इस प्रश्न के लिए अनुकूलित करें।
नेस्टेड चेन को देखने के लिए बूट प्रक्रिया पर वापस जाने के लिए नाम के बजाय PID का उपयोग करें:
$ pstree -aps 8541
systemd,1 splash fastboot kaslr
└─cron,763 -f
└─cron,795 -f
└─sh,839 -c /usr/local/bin/display-auto-brightness
└─display-auto-br,841 /usr/local/bin/display-auto-brightness
└─sleep,8541 60
नोट: एक और मिनट बीत चुका है और नींद की कमान को एक नया पीआईडी (8541) मिलता है।
807या उससे cronआगे बढ़ सकते हैं और यदि बच्चे पैदा हो गए हों तो अधिक बच्चों को भी लाइन में लिया जाएगा। लेकिन सवाल माता-पिता को खोजने का था, सभी बच्चों का नहीं।
1। मुझे नहीं लगता कि आप पीआईडी 1 को मार सकते हैं
ps -efj उसी के लिए भी इस्तेमाल किया जा सकता है।
उदाहरण के लिए,
> ps -efj | head
UID PID PPID PGID SID C STIME TTY TIME CMD
root 1 0 1 1 0 Jul01 ? 00:00:13 /sbin/init splash
root 2 0 0 0 0 Jul01 ? 00:00:00 [kthreadd]
root 3 2 0 0 0 Jul01 ? 00:00:02 [ksoftirqd/0]
root 5 2 0 0 0 Jul01 ? 00:00:00 [kworker/0:0H]
root 7 2 0 0 0 Jul01 ? 00:06:44 [rcu_sched]
root 8 2 0 0 0 Jul01 ? 00:00:00 [rcu_bh]
root 9 2 0 0 0 Jul01 ? 00:00:00 [migration/0]
root 10 2 0 0 0 Jul01 ? 00:00:08 [watchdog/0]
root 11 2 0 0 0 Jul01 ? 00:00:08 [watchdog/1]
ps -o args ...परिणामों पर उपयोग करना शामिल है, लेकिन इसमें थोड़ी गंध है।