Temukan anak-anak dari proses tersebut


Jawaban:


26

Anda mencari pstreeperintah. pstreedengan sendirinya akan mendaftar semua proses dalam bentuk pohon (seperti lsblkhalnya). Anda dapat menggunakan -pflag untuk mendapatkan PID yang terdaftar juga, dan -suntuk menampilkan proses induk juga:

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

Cara (mungkin) yang sesuai dengan POSIX untuk mendapatkan PID anak (yang saya sebutkan di komentar di tempat lain):

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

Ini memberitahu Anda psuntuk menulis PID induk dan PID dari semua proses (tanpa judul), dan kemudian digunakan awkuntuk melihat baris mana yang memiliki PID yang diberikan di bidang pertama (PID induk), dan mencetak bidang kedua yang sesuai (PID anak).


10

Jika Anda hanya ingin melihat anak-anak langsung dari suatu proses yang PID-nya 123Anda dapat menggunakan opsi psperintah --ppid:

ps --ppid 123

Anda dapat menggabungkan itu dengan pidofperintah untuk mendapatkan anak-anak dari suatu proses dengan nama yaitu diberi proses yang disebutfoo

ps --ppid $(pidof foo)

10

Pilihan lain adalah, menggunakan System Monitor (sudah diinstal sebelumnya). Di SM Menubar tandai opsi "Dependency", di bawah "View", untuk mendapat umpan balik visual, menunjukkan proses orang tua dan anak-anak seperti tunjukkan pada tangkapan layar di bawah ini.

Saya lebih suka CL (Command Line) sendiri dan menyarankan, bahwa mereka yang menggunakan Linux, dalam hal ini Ubuntu setiap hari, dengan bijak menginvestasikan waktu mereka dalam mempelajari perintah-perintah dasar, melalui Aplikasi GUI atau setidaknya dapat menguasai keduanya untuk suatu tingkat tertentu!

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini


1
PL: Tema apa itu?
muru

1
Saya menggunakan Ubuntu + GnomeShell 3.2.1 Tema ini disebut "AdwaitaDark" yang merupakan tema GTK3, tetapi ia disesuaikan dan tidak tersedia, seperti yang Anda lihat di tangkapan layar.
v2r

6

Saya bukan ahli, tetapi membaca jawaban di atas sepertinya bagi saya bahwa mungkin ada cara yang lebih langsung untuk melakukan ini melalui sistem file proc, misalnya untuk penggunaan terprogram dalam skrip daripada tampilan yang dapat dibaca manusia. Dan memang ada: untuk proses dengan kode ID $ mypid, proses anaknya terdaftar di

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

misalnya

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

Demikian pula, Anda bisa mendapatkan ID proses induk melalui entri "PPid" dalam file

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

misalnya

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

Saya tidak yakin seberapa portabel ini di luar sistem Linux.


1
Jika portabilitas menjadi perhatian: ps -o ppid= -o pid= -A | awk '$1 == <some pid>' | cut -f2harus kompatibel dengan POSIX.
muru
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.