Encuentra hijos del proceso


15

¿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?

Respuestas:


26

Estás buscando el pstreecomando. pstreepor sí solo enumerará todos los procesos en forma de árbol (como lo lsblkhace). También puede usar el -pindicador para obtener los PID enumerados, y también -spara 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 psque escriba el PID primario y el PID de todos los procesos (sin encabezados), y luego utiliza awkpara ver qué líneas tienen el PID dado en el primer campo (el PID primario) e imprime el segundo campo correspondiente (el PID secundario).


10

Si solo desea ver los elementos secundarios inmediatos de un proceso cuyo PID es 123, puede usar la opción psdel comando --ppid:

ps --ppid 123

Puede combinar eso con el pidofcomando para obtener los hijos de un proceso por nombre, es decir, dado un proceso llamadofoo

ps --ppid $(pidof foo)

10

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!

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí


1
OT: ¿Qué tema es ese?
muru

1
Uso Ubuntu + GnomeShell 3.2.1. El tema se llama "AdwaitaDark", que es un tema GTK3, pero está personalizado y no está disponible, como lo ves en las capturas de pantalla.
v2r

6

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

/proc/$mypid/task/$mypid/children

p.ej

$ cat /proc/3123/task/3123/children 
3131 3133

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

$ grep PPid /proc/3131/task/3131/status
PPid:   3123
$ grep PPid /proc/3131/task/3131/status | cut -f2
3123

Sin embargo, no estoy seguro de cuán portátil es esto más allá de los sistemas Linux.


1
Si la portabilidad es una preocupación: ps -o ppid= -o pid= -A | awk '$1 == <some pid>' | cut -f2debe ser compatible con POSIX.
muru
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.