प्रक्रिया के बच्चे खोजें


15

क्या यह जानने का कोई तरीका है कि विशिष्ट प्रक्रिया के बच्चे कौन हैं? उदाहरण के लिए उन बच्चों को जो उनकी माता-पिता की आईडी है?

जवाबों:


26

आप pstreeकमांड की तलाश कर रहे हैं । pstreeअपने आप में एक पेड़ के रूप में सभी प्रक्रियाओं को सूचीबद्ध करेगा (जैसे lsblkकरता है)। आप -pPID को सूचीबद्ध -sकरने के लिए और मूल प्रक्रिया दिखाने के लिए ध्वज का उपयोग कर सकते हैं :

$ pstree -p 602
udisksd(602)-+-{cleanup}(607)
             |-{gdbus}(605)
             |-{gmain}(603)
             `-{probing-thread}(606)

बच्चे को पीआईडी ​​प्राप्त करने का ए (शायद) पॉसक-संगत तरीका (जो मैंने कहीं और टिप्पणियों में उल्लेख किया है):

ps -o ppid= -o pid= -A | awk '$1 == <some pid>{print $2}'

यह psसभी प्रक्रियाओं के माता-पिता पीआईडी ​​और पीआईडी ​​लिखने के लिए कहता है (शीर्षकों के बिना), और फिर awkयह देखने के लिए कि कौन सी पंक्तियों में पहले क्षेत्र (मूल पीआईडी) में पीआईडी ​​है, और इसी दूसरे क्षेत्र (बच्चे पीआईडी) को प्रिंट करता है।


10

यदि आप ऐसी प्रक्रिया के तत्काल बच्चों को देखना चाहते हैं जिसका पीआईडी ​​है 123तो आप psकमांड के --ppidविकल्प का उपयोग कर सकते हैं :

ps --ppid 123

आप pidofइस प्रक्रिया को नाम के साथ एक प्रक्रिया के बच्चों को नाम से जोड़ सकते हैंfoo

ps --ppid $(pidof foo)

10

एक अन्य विकल्प, सिस्टम मॉनिटर का उपयोग करना है (पहले से स्थापित है)। एसएम मेनुबार में "डिपेंडेंसी" विकल्प, "व्यू" के तहत, दृश्य प्रतिक्रिया के लिए, नीचे स्क्रीनशॉट में शो जैसे माता-पिता और बच्चों की प्रक्रिया (एस) दिखाते हैं।

मैं खुद सीएल (कमांड लाइन) को पसंद करता हूं और सुझाव देता हूं, कि जो लोग लिनक्स का उपयोग करते हैं, इस मामले में दैनिक आधार पर उबंटू, जीयूआई अनुप्रयोगों या कम से कम बुनियादी आदेशों को सीखने में अपना समय निवेश करते हैं, कम से कम दोनों में मास्टर करने में सक्षम हैं निश्चित डिग्री!

यहां छवि विवरण दर्ज करें यहां छवि विवरण दर्ज करें


1
OT: वह विषय क्या है?
मूरू

1
मैं Ubuntu + GnomeShell 3.2.1 का उपयोग करता हूं। थीम को "AdwaitaDark" कहा जाता है जो GTK3 थीम है, लेकिन यह अनुकूलित और उपलब्ध नहीं है, जैसे आप इसे स्क्रीनशॉट में देखते हैं।
v2r

6

मैं एक विशेषज्ञ नहीं हूं, लेकिन उपरोक्त उत्तरों को पढ़ने से मुझे यह प्रतीत हुआ कि संभवतया यह एक और अधिक प्रत्यक्ष तरीका है, जो कि फ़ाइल सिस्टम के माध्यम से ऐसा करने के लिए है, उदाहरण के लिए मानव-पठनीय प्रदर्शन के बजाय स्क्रिप्ट में प्रोग्रामेटिक उपयोग के लिए। और वास्तव में वहाँ है: आईडी कोड $ mypid के साथ एक प्रक्रिया के लिए, इसकी बाल प्रक्रियाओं को सूचीबद्ध किया गया है

/proc/$mypid/task/$mypid/children

जैसे

$ cat /proc/3123/task/3123/children 
3131 3133

इसी तरह, आप फ़ाइल में "PPid" प्रविष्टि के माध्यम से मूल प्रक्रिया आईडी प्राप्त कर सकते हैं

/proc/$mypid/task/$mypid/status

जैसे

$ grep PPid /proc/3131/task/3131/status
PPid:   3123
$ grep PPid /proc/3131/task/3131/status | cut -f2
3123

मुझे यकीन नहीं है कि यह लिनक्स सिस्टम से कितना पोर्टेबल है, हालांकि।


1
यदि पोर्टेबिलिटी एक चिंता का विषय है: ps -o ppid= -o pid= -A | awk '$1 == <some pid>' | cut -f2POSIX-compliant होना चाहिए।
मूरू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.