Como exibir apenas um processo e seus processos descendentes no htop?

10

Eu quero monitorar apenas um processo e seus processos filhos htop. A filtragem no nome do processo pai lista apenas o processo pai, não seus filhos. Como mostro os processos filhos também?

becko
fonte

Respostas:

8

No Linux, você pode fazer:

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

Onde $PIDestá o processo raiz. Isso funciona da seguinte maneira:

  1. A lista dos processos desejados é obtida com pstree, usando a -popção para listá-los com seu PID.
  2. A saída é canalizada para um script Perl que recupera os PIDs, usando uma expressão regular (aqui \((\d+)\)), e os gera separados por vírgulas.
  3. Esta lista é fornecida como argumento de htop -p.

Para outros sistemas operacionais, como o Mac OS, pode ser necessário adaptar a expressão regular que recupera os PIDs.

Nota: Infelizmente, não é possível atualizar a lista com novos filhos que são gerados mais tarde, porque, uma vez htopexecutada, não é possível fazer mais nada. Essa é uma limitação de htop(versão atual: 2.0.2).

vinc17
fonte
$PIDpode ser o nome do processo ou tem que ser o id?
Becko
O @becko $PIDtem que ser o pid, mas você pode obter o ID do nome do processo com pgrep.
precisa saber é
5
isso não será atualizado quando novas crianças são gerados embora ... gostaria de usar sth como ele para monitorar única coisa na minha sessão tmux
black_puppydog
@black_puppydog me too!
Becko
No macOS com pstreefrom 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 } }')

Use o awk para criar uma lista separada por vírgula de IDs de processo a partir da saída de ps -ef passando o ID do processo pai como proc e depois distribuindo-o para htop -p.

Raman Sailopal
fonte