在 Linux 中,查看**某个进程的父进程(PPID)**有多种常用方法,下面按使用场景给你总结一下。
一、使用 ps 命令(最常用)
1️⃣ 查看指定进程的父进程
ps -o pid,ppid,cmd -p <进程PID>
示例:
ps -o pid,ppid,cmd -p 1234
输出示例:
PID PPID CMD
1234 1001 /usr/bin/nginx
✅ PPID 就是父进程 ID
2️⃣ 查看当前 shell 的父进程
ps -o pid,ppid,cmd -p $$
3️⃣ 查看所有进程的 PID 和 PPID
ps -ef
或:
ps aux
示例:
ps -ef | grep nginx
二、使用 /proc 文件系统(最底层)
每个进程在 /proc 下都有一个目录:
cat /proc/
示例:
cat /proc/1234/status | grep PPid
输出:
PPid: 1001
✅ 非常适合脚本或调试
三、使用 pstree(查看进程树)
1️⃣ 查看进程树
pstree
2️⃣ 查看指定进程及其父进程
pstree -p
示例:
pstree -p 1234
四、使用 top / htop
top
top
然后按:
f → 选择 PPID → 回车
htop(推荐)
htop
默认就显示 PPID
如果没有,按 F2 → 开启 PPID 列
五、查看父进程对应的程序
知道 PPID 后,可以反查父进程:
ps -p
六、常见场景示例
查看某个服务的父进程
ps -o pid,ppid,cmd -p $(pgrep nginx)
判断进程是否被 systemd 启动
ps -o pid,ppid,cmd -p
如果 PPID 是 1,通常是 systemd / init
总结(最常用)
需求
命令
查看父进程
ps -o pid,ppid,cmd -p PID
查看进程树
pstree -p PID
底层查看
cat /proc/PID/status | grep PPid
交互式
htop
如果你有具体进程名或场景(如 Docker、systemd、僵尸进程),我可以给你更针对性的命令。