相关疑难解决方法(0)

如何使用bash找到给定进程的顶级父PID?

假设我运行ps axf,我可以看到我的命令的进程树看起来像这样:

  800 ?        Ss     0:00 /usr/sbin/sshd
10186 ?        Ss     0:00  \_ sshd: yukondude [priv]
10251 ?        S      0:00      \_ sshd: yukondude@pts/0
10252 pts/0    Ss     0:00          \_ -bash
10778 pts/0    S      0:00              \_ su -
10785 pts/0    S      0:00                  \_ -su
11945 pts/0    R+     0:00                      \_ ps axf
Run Code Online (Sandbox Code Playgroud)

我知道我可以检查$$当前shell的PID(10785)或$PPID父PID(10778).

但我只想要顶级父PID,在这个例子中它将是800(SSH守护进程).有没有办法轻松做到这一点?

我从这个SO回答中了解到,我可以递归检查/proc/PID/stat文件中的第4个条目,以查找每个进程的父PID:

# cut -f4 -d' ' /proc/10785/stat
10778
# cut -f4 -d' ' /proc/10778/stat
10252
# cut -f4 -d' ' …
Run Code Online (Sandbox Code Playgroud)

bash process

19
推荐指数
3
解决办法
2万
查看次数

给定子PID,如何获得父PID

我正在开发一个项目,我有一些PID,我必须找出哪些是僵尸进程,然后杀死他们的父进程,以杀死最初的僵尸进程.我不确定是否有任何方法可以找出给定PID的PPID是什么.任何帮助,将不胜感激.

c fork pid

5
推荐指数
1
解决办法
4596
查看次数

标签 统计

bash ×1

c ×1

fork ×1

pid ×1

process ×1