在 CentOS 中监控进程状态有多种方式,下面按常用程度和使用场景给你系统介绍。
ps —— 查看进程快照ps aux
ps -ef
常用组合:
ps aux | grep nginx
查看某个进程详细信息:
ps -p PID -o pid,ppid,cmd,%cpu,%mem,stat
top —— 实时查看进程资源占用top
常用操作:
P:按 CPU 排序M:按内存排序k:杀进程q:退出htop(推荐,需安装)yum install epel-release -y
yum install htop -y
htop
优点:
systemd(服务进程)如果是 systemd 管理的服务:
systemctl status nginx
查看失败进程:
systemctl --failed
journalctl —— 查看进程日志journalctl -u nginx
journalctl -u nginx -f # 实时日志
pidstat(非常推荐)yum install sysstat -y
pidstat -p PID 1
pidstat -u -p PID 1 # CPU
pidstat -r -p PID 1 # 内存
pidstat -d -p PID 1 # IO
vmstat / iostatvmstat 1
iostat -x 1
cron + 脚本示例:监控 nginx 是否存活
pgrep nginx > /dev/null || systemctl restart nginx
加入 crontab:
* * * * * /root/check_nginx.sh
supervisor(第三方)适合自己写的程序:
yum install supervisor
配置示例:
[program:myapp]
command=/usr/bin/python app.py
autostart=true
autorestart=true
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
R 运行中
S 睡眠
D 不可中断睡眠(常见 IO 卡死)
Z 僵尸进程
T 停止
| 场景 | 推荐工具 |
|---|---|
| 快速看进程 | ps / top |
| 实时资源 | htop / pidstat |
| 服务进程 | systemctl |
| 自动保活 | supervisor / cron |
| 长期监控 | Zabbix / Prometheus |
如果你有具体场景(如:监控 Java 进程、kill 不掉、CPU 飙高),我可以给你更针对性的方案。