Как отобразить только процесс и его дочерние процессы на 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

@becko $PIDдолжен быть pid, но вы можете получить идентификатор из названия процесса с помощью pgrep.
vinc17

5
это не будет обновляться, когда появляются новые дети ... хотелось бы использовать sth как это для мониторинга только вещей в моей сессии tmux
black_puppydog

@black_puppydog меня тоже!
Бекко

На macOS с pstreeот 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 } }')

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.