Bilmenin herhangi bir yolu var mı, belirli sürecin çocukları kim? örneğin ebeveyn kimlikleri foo olan çocuklar?
Bilmenin herhangi bir yolu var mı, belirli sürecin çocukları kim? örneğin ebeveyn kimlikleri foo olan çocuklar?
Yanıtlar:
pstree
Komutu arıyorsunuz .
pstree
tek başına tüm süreçleri bir ağaç formunda listeleyecektir (olduğu gibi lsblk
). Sen kullanabilirsiniz -p
da listelenir PID'leri almak için bayrak ve -s
ebeveyn sürecinin yanı göstermek için:
$ pstree -p 602
udisksd(602)-+-{cleanup}(607)
|-{gdbus}(605)
|-{gmain}(603)
`-{probing-thread}(606)
Alt PID'leri almanın (muhtemelen) POSIX uyumlu bir yolu (başka bir yerde yorumlarda bahsettiğim):
ps -o ppid= -o pid= -A | awk '$1 == <some pid>{print $2}'
Bu, ps
tüm işlemlerin (başlıksız) üst PID'sini ve PID'sini yazmayı söyler ve daha sonra awk
ilk alanda (ana PID) verilen PID'nin hangi satırların olduğunu görmek için kullanılır ve karşılık gelen ikinci alanı (alt PID) yazdırır.
PID'si olan bir işlemin hemen alt öğelerini görmek istiyorsanız 123
, ps
komutun --ppid
seçeneğini kullanabilirsiniz:
ps --ppid 123
Bunu, pidof
bir işlemin alt öğelerini adıyla alma komutuyla birleştirebilirsiniz;foo
ps --ppid $(pidof foo)
Başka bir seçenek, Sistem Monitörü'nü kullanmaktır (önceden yüklenmiş olarak gelir). SM Menubar'da, üst ve alt işlemleri aşağıdaki ekran görüntüsünde göstermek gibi gösteren görsel bir geri bildirim almak için "Görünüm" altında "Bağımlılıklar" seçeneğini işaretleyin.
CL'yi (Komut Satırı) kendim tercih ediyorum ve Linux kullananların, bu durumda Ubuntu'yu günlük olarak akıllıca, temel komutları öğrenmeye zamanlarını akıllıca yatırdığını veya en azından her ikisini de belli bir derece!
Ben bir uzman değilim, ama yukarıdaki cevapları okumak bana muhtemelen proc dosya sistemi aracılığıyla bunu yapmak için daha doğrudan bir yol var gibi görünüyordu, örneğin insan tarafından okunabilir ekran yerine bir komut dosyası programlı kullanım için. Ve gerçekten de var: $ mypid kimlik koduna sahip bir işlem için alt işlemleri
/proc/$mypid/task/$mypid/children
Örneğin
$ cat /proc/3123/task/3123/children
3131 3133
Benzer şekilde, üst süreç kimliğini dosyadaki "PPid" girişi aracılığıyla alabilirsiniz
/proc/$mypid/task/$mypid/status
Örneğin
$ grep PPid /proc/3131/task/3131/status
PPid: 3123
$ grep PPid /proc/3131/task/3131/status | cut -f2
3123
Ancak bunun Linux sistemlerinin ötesinde ne kadar taşınabilir olduğundan emin değilim.
ps -o ppid= -o pid= -A | awk '$1 == <some pid>' | cut -f2
POSIX uyumlu olmalıdır.