¿Cómo mostrar solo un proceso y sus procesos descendientes en htop?

10

Quiero monitorear solo un proceso y sus procesos secundarios htop. Filtrar por el nombre del proceso padre enumera solo el proceso padre, no sus hijos. ¿Cómo muestro los procesos secundarios también?

llamar
fuente

Respuestas:

8

En Linux, puedes hacer:

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

¿Dónde $PIDestá el proceso raíz? Esto funciona de la siguiente manera:

  1. La lista de los procesos deseados se obtiene con pstreela -popción de listarlos con su PID.
  2. La salida se canaliza a un script de Perl que recupera los PID, utilizando una expresión regular (aquí, \((\d+)\)), y los genera separados por comas.
  3. Esta lista se proporciona como argumento de htop -p.

Para otros sistemas operativos como Mac OS, es posible que deba adaptar la expresión regular que recupera los PID.

Nota: Desafortunadamente, no es posible actualizar la lista con nuevos hijos que se generan más tarde, porque una vez que htopse ha ejecutado, no se puede hacer nada más. Esta es una limitación de htop(versión actual: 2.0.2).

vinc17
fuente
$PIDpuede ser el nombre del proceso, o tiene que ser el id?
Becko
@becko $PIDtiene que ser el pid, pero puede obtener la identificación del nombre del proceso con pgrep.
vinc17
55
sin embargo, esto no se actualizará cuando se generen nuevos hijos ... me encantaría usar algo así para monitorear solo cosas en mi sesión de tmux
black_puppydog
@black_puppydog yo también!
Becko
En macOS con pstreede 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 awk para crear una lista separada por comas de id de proceso a partir de la salida de ps -ef pasando el id del proceso padre como proc y luego pasándolo a htop -p.

Raman Sailopal
fuente