adakah cara untuk mengetahui, siapa anak-anak dari proses khusus? misalnya anak-anak yang ID orangtua mereka adalah foo?
adakah cara untuk mengetahui, siapa anak-anak dari proses khusus? misalnya anak-anak yang ID orangtua mereka adalah foo?
Jawaban:
Anda mencari pstree
perintah.
pstree
dengan sendirinya akan mendaftar semua proses dalam bentuk pohon (seperti lsblk
halnya). Anda dapat menggunakan -p
flag untuk mendapatkan PID yang terdaftar juga, dan -s
untuk 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 ps
untuk menulis PID induk dan PID dari semua proses (tanpa judul), dan kemudian digunakan awk
untuk melihat baris mana yang memiliki PID yang diberikan di bidang pertama (PID induk), dan mencetak bidang kedua yang sesuai (PID anak).
Jika Anda hanya ingin melihat anak-anak langsung dari suatu proses yang PID-nya 123
Anda dapat menggunakan opsi ps
perintah --ppid
:
ps --ppid 123
Anda dapat menggabungkan itu dengan pidof
perintah untuk mendapatkan anak-anak dari suatu proses dengan nama yaitu diberi proses yang disebutfoo
ps --ppid $(pidof foo)
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!
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.
ps -o ppid= -o pid= -A | awk '$1 == <some pid>' | cut -f2
harus kompatibel dengan POSIX.