¿Cómo encuentras el proceso padre de un proceso zombie?

47

¿Cómo encuentras el proceso padre de los procesos zombie?

Cuando el proceso hijo es algo en el que el padre no es del todo obvio ...

¿Hay alguna forma de enumerar procesos en formato de árbol o algo así?

Jack
fuente

Respuestas:

61

Agregue la lopción a su línea de comando ps. Esta es la opción para salida larga. La identificación del proceso principal es una de las columnas adicionales, etiquetada PPID.

$ ps l
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
0   508  3344  4498  18   0   2452  1236 wait   Ss   pts/12     0:00 /bin/sh
0   508  4467 17796  15   0   4664  1572 wait   Ss   pts/5      0:00 -/bin/bash
0   508  4498  4467  15   0  23032 15108 -      S+   pts/5      2:20 emacs -nw
0   508  4532 17796  15   0   4532  1464 wait   Ss   pts/13     0:00 -/bin/bash
0   508  4916 17796  15   0   4664  1648 wait   Ss   pts/7      0:01 -/bin/bash

Otra opción es el comando pstree para mostrar una representación de árbol ascii de los procesos. Probablemente desee la -popción de mostrar identificadores de proceso.

$ pstree -p dharris
screen(17796)─┬─bash(4467)───emacs(4498)───sh(3344)───sh(3345)
              ├─bash(4532)───su(31037)───bash(31041)
              ├─bash(4916)───pstree(26456)
              ├─bash(13547)───su(20442)───bash(20443)
              └─bash(17797)

sshd(25813)───bash(25817)───screen(25870)
Doug Harris
fuente
8
Excelente respuesta En lugar de pstree -p harris, pstree -p $USERtransmitiría el mismo significado, y trabajaría textualmente.
phihag
12

FWIW, pstiene un modo "bosque" que muestra varios árboles:

# ps --version
procps version 3.2.8

# ps f
  PID TTY      STAT   TIME COMMAND
 7889 pts/7    Ss     0:00 -bash
 7988 pts/7    R+     0:00  \_ ps f
 2447 pts/0    Ss+    0:00 -bash
 2532 pts/0    S      0:00  \_ /bin/bash /home/robmee01/sync.sh
 2548 pts/0    S      0:00  |   \_ ssh [email protected]
 2533 pts/0    S      0:00  \_ python /home/robmee01/IE2FF.py
 2534 pts/0    S      0:08  \_ x11vnc -usepw -forever
 2535 pts/0    S      2:47  \_ xosview
 2536 pts/0    Sl     0:17  \_ java -jar /work/timesheet/TimeSheet.jar
 2662 pts/0    Sl    18:53  \_ ./firefox-bin

Si eso no muestra el proceso que está buscando, intente especificar su nombre de usuario explícitamente ps f -U $USER:; esto tiende a mostrar más procesos que los antiguos ps.

Personalmente uso ps fo pid,cmdo para obtener una vista del bosque con mi elección de columnas ( pid,cmden este caso). Puede obtener una lista completa de columnas con ps L.

RobM
fuente
Perfecto, la única opción que realmente funciona.
Felipe
1

htoptambién es bueno, especialmente cuando se presiona lel nombre de un proceso que mostrará todos los archivos, tuberías y URL abiertos para un proceso (requiere lsof)

ccpizza
fuente
htop también se puede cambiar al modo de árbol.
lanoxx
-1

Primer uso toppara descubrir pidel proceso zombie. Luego corre ps -elfo ps -efpara encontrar el ppiddel zombie.

Rajesh Swain
fuente