Як відобразити лише процес і його нащадків на htop?


10

Я хочу стежити лише за процесом і його процесами, що стосуються його дітей htop. Фільтрування на ім'я батьківського процесу перераховує лише батьківський процес, а не його дочірні. Як я також показую дітям процеси?

Відповіді:


8

У Linux можна зробити:

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

де $PIDвідбувається кореневий процес. Це працює так:

  1. Список потрібних процесів отримується за pstreeдопомогою -pпараметра списку їх з їх PID.
  2. Вихід передається в сценарій Perl, який отримує PID, використовуючи регулярний вираз (тут, \((\d+)\)) і виводить їх розділеними комами.
  3. Цей список подається як аргумент htop -p.

Для інших ОС, таких як Mac OS, можливо, вам доведеться адаптувати регулярний вираз, який витягує PID.

Примітка. На жаль, неможливо оновити список новими дітьми, які пізніше нерестуються, тому що, як тільки htopвін буде виконаний, більше нічого не можна робити. Це обмеження htop(поточна версія: 2.0.2).


$PIDможе бути ім'ям процесу, або він повинен бути ідентифікатором?
бекко

@becko $PIDмає бути pid, але ви можете отримати ідентифікатор від імені процесу за допомогою pgrep.
vinc17

5
це не оновлюється, коли з'являться нові діти, хоча ... я хотів би використовувати що-небудь, як це для моніторингу лише речей у моїй сесії
tmux

@black_puppydog мене теж!
бекко

На macOS з pstreeвід домашньої мови: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 } }')

Використовуйте awk для створення списку ідентифікаторів процесу, відокремлених комами, з виводу ps -ef, що передає ідентифікатор батьківського процесу як proc, а потім передає цей файл htop -p.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.