Sürecin çocuklarını bulun


Yanıtlar:


26

pstreeKomutu arıyorsunuz . pstreetek başına tüm süreçleri bir ağaç formunda listeleyecektir (olduğu gibi lsblk). Sen kullanabilirsiniz -pda listelenir PID'leri almak için bayrak ve -sebeveyn 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, pstüm işlemlerin (başlıksız) üst PID'sini ve PID'sini yazmayı söyler ve daha sonra awkilk 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.


10

PID'si olan bir işlemin hemen alt öğelerini görmek istiyorsanız 123, pskomutun --ppidseçeneğini kullanabilirsiniz:

ps --ppid 123

Bunu, pidofbir işlemin alt öğelerini adıyla alma komutuyla birleştirebilirsiniz;foo

ps --ppid $(pidof foo)

10

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!

resim açıklamasını buraya girin resim açıklamasını buraya girin


1
OT: Hangi tema bu?
muru

1
Ubuntu + GnomeShell 3.2.1 kullanıyorum. Tema, bir GTK3 teması olan "AdwaitaDark" olarak adlandırılıyor, ancak ekran görüntülerinde gördüğünüz gibi özelleştirilmiş ve kullanılamıyor.
v2r

6

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.


1
Taşınabilirlik önemliyse: ps -o ppid= -o pid= -A | awk '$1 == <some pid>' | cut -f2POSIX uyumlu olmalıdır.
muru
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.