¿Hay alguna manera de saber quiénes son los hijos del proceso específico? por ejemplo, aquellos niños cuya identificación de padres es foo?
Estás buscando el pstree
comando.
pstree
por sí solo enumerará todos los procesos en forma de árbol (como lo lsblk
hace). También puede usar el -p
indicador para obtener los PID enumerados, y también -s
para mostrar el proceso principal:
$ pstree -p 602
udisksd(602)-+-{cleanup}(607)
|-{gdbus}(605)
|-{gmain}(603)
`-{probing-thread}(606)
Una forma (probablemente) compatible con POSIX de obtener los PID secundarios (que he mencionado en los comentarios en otra parte):
ps -o ppid= -o pid= -A | awk '$1 == <some pid>{print $2}'
Esto le indica ps
que escriba el PID primario y el PID de todos los procesos (sin encabezados), y luego utiliza awk
para ver qué líneas tienen el PID dado en el primer campo (el PID primario) e imprime el segundo campo correspondiente (el PID secundario).
Si solo desea ver los elementos secundarios inmediatos de un proceso cuyo PID es 123
, puede usar la opción ps
del comando --ppid
:
ps --ppid 123
Puede combinar eso con el pidof
comando para obtener los hijos de un proceso por nombre, es decir, dado un proceso llamadofoo
ps --ppid $(pidof foo)
Otra opción es usar System Monitor (viene preinstalado). En la barra de menú SM, marque la opción "Dependencias", debajo de "Ver", para tener una retroalimentación visual, mostrando los procesos principales y secundarios como se muestra en la captura de pantalla a continuación.
Prefiero la CL (línea de comando) y sugiero que quienes usan Linux, en este caso Ubuntu diariamente, inviertan sabiamente su tiempo en aprender los comandos básicos, a través de aplicaciones GUI o al menos puedan dominar ambos ¡Cierto grado!
No soy un experto, pero al leer las respuestas anteriores me pareció que probablemente haya una forma más directa de hacerlo a través del sistema de archivos proc, por ejemplo, para uso programático en un script en lugar de una pantalla legible para humanos. Y, de hecho, existe: para un proceso con el código de identificación $ mypid, sus procesos secundarios se enumeran en
p.ej
Del mismo modo, puede obtener el ID del proceso principal a través de la entrada "PPid" en el archivo
/proc/$mypid/task/$mypid/status
p.ej
Sin embargo, no estoy seguro de cuán portátil es esto más allá de los sistemas Linux.
fuente
ps -o ppid= -o pid= -A | awk '$1 == <some pid>' | cut -f2
debe ser compatible con POSIX.