Bagaimana cara menampilkan hanya proses dan proses turunannya di htop?

10

Saya ingin memantau hanya proses dan proses anak-anaknya htop. Pemfilteran pada nama proses induk hanya mencantumkan proses induk, bukan anak-anaknya. Bagaimana cara saya menunjukkan proses anak-anak juga?

becko
sumber

Jawaban:

8

Di Linux, Anda dapat melakukan:

htop -p `pstree -p $PID | perl -ne 'push @t, /\((\d+)\)/g; END { print join ",", @t }'`

dimana $PIDproses root. Ini berfungsi sebagai berikut:

  1. Daftar proses yang diinginkan diperoleh dengan pstreemenggunakan -popsi untuk mendaftar mereka dengan PID mereka.
  2. Output disalurkan ke skrip Perl yang mengambil PID, menggunakan ekspresi reguler (di sini, \((\d+)\)), dan output mereka dipisahkan dengan koma.
  3. Daftar ini disediakan sebagai argumen dari htop -p.

Untuk OS lain seperti Mac OS, Anda mungkin perlu menyesuaikan ekspresi reguler yang mengambil PID.

Catatan: Sayangnya tidak mungkin untuk memperbarui daftar dengan anak-anak baru yang muncul nanti, karena sekali htoptelah dieksekusi, orang tidak dapat melakukan hal lain. Ini adalah batasan htop(versi saat ini: 2.0.2).

vinc17
sumber
$PIDdapat nama proses, atau harus id?
becko
@becko $PIDharus menjadi pid, tetapi Anda bisa mendapatkan id dari nama prosesnya pgrep.
vinc17
5
ini tidak akan diperbarui ketika anak-anak baru melahirkan ... akan senang menggunakan sth seperti itu untuk memantau hanya barang-barang di sesi tmux saya
black_puppydog
@black_puppydog saya juga!
becko
Di macOS dengan pstreedari homebrew:htop -p `pstree -p $PID | perl -ne 'push @t, /--- (\d+) /g; END { print join ",", @t }'`
jpsim
0
htop -p $(ps -ef | awk -v proc=15305 '$3 == proc { cnt++;if (cnt == 1) { printf "%s",$2 } else { printf ",%s",$2 } }')

Gunakan awk untuk membuat daftar id proses yang dipisahkan dengan koma dari keluaran ps -ef yang meneruskan id proses induk sebagai proc dan kemudian membagikan ini ke htop -p.

Raman Sailopal
sumber