在 Linux 下监控进程状态,可以从命令行工具、系统接口、自动化监控三个层面来做。下面按实用程度给你一个清晰指南。
ps —— 查看进程快照ps aux
ps -ef
关键字段:
STAT:进程状态(R 运行、S 睡眠、D 不可中断、Z 僵尸、T 停止)%CPU / %MEM:资源占用示例:
ps -eo pid,ppid,stat,%cpu,%mem,cmd | grep nginx
top / htop —— 实时查看top
htop # 需安装,更友好
可看:
pstree —— 查看进程关系pstree -p
适合看父子进程结构。
systemctl —— 服务进程状态systemctl status nginx
适合监控 systemd 管理的服务。
每个进程对应:
/proc/<pid>/
常用文件:
/proc/<pid>/status → 状态、内存/proc/<pid>/stat → 内核级状态/proc/<pid>/cmdline → 启动命令示例:
cat /proc/1234/status
ps aux | awk '$8 ~ /Z/'
pgrep nginx
或:
if ! pgrep -f myapp > /dev/null; then
echo "process down"
fi
cron + 脚本定期检查进程是否存在,不存在就报警或重启。
supervisor / systemd| 场景 | 推荐方式 |
|---|---|
| 临时排查 | ps / top |
| 服务进程 | systemctl |
| 开发调试 | /proc |
| 生产监控 | Prometheus / Zabbix |
| 进程保活 | systemd / supervisor |
如果你有具体场景(比如:监控 Java 进程、容器进程、自动重启),我可以给你更针对性的方案。