linux怎么显示孤儿进程
linux怎么显示孤儿进程详细介绍
在 Linux 中,孤儿进程指父进程已终止、但自身仍在运行的进程(init 进程会收养它们,PPID 变为 1)。以下是显示孤儿进程的常用方法:
方法 1:用
ps 命令过滤
bash
pid,ppid,command
- 参数说明:
ps -eo pid,ppid,command:显示进程 ID(PID)、父进程 ID(PPID)和命令。awk '$2 == 1 && $1 != 1':筛选 PPID 为 1 且 PID 不等于 1 的进程(排除 init 自身)。
- 输出示例:plaintext
PID PPID COMMAND1234 1 /usr/bin/python3 my_script.py
5678 1 /bin/sh -c sleep 100
方法 2:用
pgrep 快速查找
bash
pgrep
- 参数说明:
-P 1:查找父进程为 1 的进程。-v 1:排除 PID 为 1 的进程(init)。
- 输出:直接列出孤儿进程的 PID(如
1234 5678)。
方法 3:通过
/proc 文件系统
bash
/proc/-9*/status
- 原理:遍历所有进程的状态文件,筛选 PPid 为 1 的进程。
- 输出示例:plaintext
Name: python3PPid: 1
--
Name: sh
PPid: 1
关键特征说明
- PPID=1:所有孤儿进程的父进程都是 init(PID 1)。
- 状态:通常为
S(休眠)或R(运行),不会是僵尸状态(Z)。 - 实时监控:可用
watch -n 1 "ps -eo pid,ppid,command | awk '$2 == 1 && $1 != 1'"动态查看。
场景举例
假设你启动一个脚本后关闭终端(父进程终止),脚本进程会成为孤儿:
bash
pid,ppid,command
9123nohup & pid,ppid,command |
通过以上方法,可快速定位系统中的孤儿进程。孤儿进程通常无害,init 会自动回收它们的资源。