क्या यह जानने का कोई तरीका है कि विशिष्ट प्रक्रिया के बच्चे कौन हैं? उदाहरण के लिए उन बच्चों को जो उनकी माता-पिता की आईडी है?
क्या यह जानने का कोई तरीका है कि विशिष्ट प्रक्रिया के बच्चे कौन हैं? उदाहरण के लिए उन बच्चों को जो उनकी माता-पिता की आईडी है?
जवाबों:
आप pstree
कमांड की तलाश कर रहे हैं ।
pstree
अपने आप में एक पेड़ के रूप में सभी प्रक्रियाओं को सूचीबद्ध करेगा (जैसे lsblk
करता है)। आप -p
PID को सूचीबद्ध -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
यह देखने के लिए कि कौन सी पंक्तियों में पहले क्षेत्र (मूल पीआईडी) में पीआईडी है, और इसी दूसरे क्षेत्र (बच्चे पीआईडी) को प्रिंट करता है।
यदि आप ऐसी प्रक्रिया के तत्काल बच्चों को देखना चाहते हैं जिसका पीआईडी है 123
तो आप ps
कमांड के --ppid
विकल्प का उपयोग कर सकते हैं :
ps --ppid 123
आप pidof
इस प्रक्रिया को नाम के साथ एक प्रक्रिया के बच्चों को नाम से जोड़ सकते हैंfoo
ps --ppid $(pidof foo)
एक अन्य विकल्प, सिस्टम मॉनिटर का उपयोग करना है (पहले से स्थापित है)। एसएम मेनुबार में "डिपेंडेंसी" विकल्प, "व्यू" के तहत, दृश्य प्रतिक्रिया के लिए, नीचे स्क्रीनशॉट में शो जैसे माता-पिता और बच्चों की प्रक्रिया (एस) दिखाते हैं।
मैं खुद सीएल (कमांड लाइन) को पसंद करता हूं और सुझाव देता हूं, कि जो लोग लिनक्स का उपयोग करते हैं, इस मामले में दैनिक आधार पर उबंटू, जीयूआई अनुप्रयोगों या कम से कम बुनियादी आदेशों को सीखने में अपना समय निवेश करते हैं, कम से कम दोनों में मास्टर करने में सक्षम हैं निश्चित डिग्री!
मैं एक विशेषज्ञ नहीं हूं, लेकिन उपरोक्त उत्तरों को पढ़ने से मुझे यह प्रतीत हुआ कि संभवतया यह एक और अधिक प्रत्यक्ष तरीका है, जो कि फ़ाइल सिस्टम के माध्यम से ऐसा करने के लिए है, उदाहरण के लिए मानव-पठनीय प्रदर्शन के बजाय स्क्रिप्ट में प्रोग्रामेटिक उपयोग के लिए। और वास्तव में वहाँ है: आईडी कोड $ 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
मुझे यकीन नहीं है कि यह लिनक्स सिस्टम से कितना पोर्टेबल है, हालांकि।
ps -o ppid= -o pid= -A | awk '$1 == <some pid>' | cut -f2
POSIX-compliant होना चाहिए।