温馨提示×

如何监控linux进程状态

小樊
41
2026-09-09 13:23:52
栏目: 智能运维

在 Linux 下监控进程状态,可以从命令行工具、系统接口、自动化监控三个层面来做。下面按实用程度给你一个清晰指南。


一、常用命令行工具(最常用)

1. ps —— 查看进程快照

ps aux
ps -ef

关键字段:

  • STAT:进程状态(R 运行、S 睡眠、D 不可中断、Z 僵尸、T 停止)
  • %CPU / %MEM:资源占用

示例:

ps -eo pid,ppid,stat,%cpu,%mem,cmd | grep nginx

2. top / htop —— 实时查看

top
htop   # 需安装,更友好

可看:

  • 实时 CPU、内存
  • 单个进程资源变化
  • 排序(CPU / MEM)

3. pstree —— 查看进程关系

pstree -p

适合看父子进程结构。


4. systemctl —— 服务进程状态

systemctl status nginx

适合监控 systemd 管理的服务


二、深入进程状态(/proc 接口)

每个进程对应:

/proc/<pid>/

常用文件:

  • /proc/<pid>/status → 状态、内存
  • /proc/<pid>/stat → 内核级状态
  • /proc/<pid>/cmdline → 启动命令

示例:

cat /proc/1234/status

三、监控“特定状态”

1. 监控僵尸进程

ps aux | awk '$8 ~ /Z/'

2. 监控某个进程是否存活

pgrep nginx

或:

if ! pgrep -f myapp > /dev/null; then
  echo "process down"
fi

四、自动化 & 长期监控

1. cron + 脚本

定期检查进程是否存在,不存在就报警或重启。

2. supervisor / systemd

  • 自动重启
  • 日志管理
  • 状态查询

3. 专业监控工具

  • Prometheus + Node Exporter
  • Zabbix
  • Netdata(轻量实时)

五、典型场景建议

场景 推荐方式
临时排查 ps / top
服务进程 systemctl
开发调试 /proc
生产监控 Prometheus / Zabbix
进程保活 systemd / supervisor

如果你有具体场景(比如:监控 Java 进程、容器进程、自动重启),我可以给你更针对性的方案。

0