如何找到僵尸进程的父进程?

Jac*_*ack 49 linux unix kill process

如何找到僵尸进程的父进程?

当子进程是父进程并不完全明显的时候......

有没有办法以树格式或其他方式列出进程?

Dou*_*ris 62

将该l选项添加到您的 ps 命令行。这是长输出的选项。父进程 ID 是附加列之一——标记为 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
Run Code Online (Sandbox Code Playgroud)

另一个选项是pstree命令来显示进程的 ascii 树表示。您可能需要-p显示进程 ID的选项。

$ 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)
Run Code Online (Sandbox Code Playgroud)

  • 优秀的答案。代替 `pstree -p harris`,`pstree -p $USER` 将传达相同的含义,并且逐字逐句地工作。 (8认同)

Rob*_*obM 14

FWIW,ps具有显示多棵树的“森林”模式:

# 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 usernamer@example.com
 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
Run Code Online (Sandbox Code Playgroud)

如果没有显示你正在寻找的过程中,可以尝试使用您的用户名明确:ps f -U $USER; 这往往会显示出比普通旧的更多的进程ps

我个人使用ps fo pid,cmd或通过我选择的列(pid,cmd在这种情况下)获得森林视图。您可以获得完整的列列表ps L