watch命令需结合ps、pidstat或top等工具实现实时进程监控:用watch -n 2配合ps查看nginx的CPU和内存占用;用watch -n 1配合pidstat -p PID监控指定进程的CPU、内存、I/O;用watch -n 3配合top -b -n1聚焦观察python app.py进程。

Watch 命令本身不直接监控进程资源,而是周期性执行指定命令并刷新显示——要实时看进程的 CPU、内存等变化,得把它和 ps、top、pidstat 等工具组合使用。
用 watch + ps 查看指定进程的 CPU 和内存占用
比如想每 2 秒查看 nginx 进程的资源使用情况:
watch -n 2 'ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | grep nginx | head -5'
说明:
• -n 2 表示每 2 秒刷新一次
• ps -eo 输出所有进程的 PID、父进程 PID、命令、CPU 和内存占比
• --sort=-%cpu 按 CPU 占用降序排列(负号表示倒序)
• grep nginx | head -5 筛出含 nginx 的行,只显示前 5 条,避免刷屏
用 watch + pidstat 监控单个进程的精细资源指标
pidstat 是 sysstat 包里的专业工具,比 ps 更适合持续观测。先确认已安装:
sudo apt install sysstat(Debian/Ubuntu)或 sudo yum install sysstat(CentOS/RHEL)
监控 PID 为 1234 的进程每秒的 CPU、内存、I/O:
watch -n 1 'pidstat -p 1234 1 1'
说明:
• pidstat -p 1234 指定目标进程 ID
• 1 1 表示采样间隔 1 秒、只采 1 次(配合 watch 实现重复刷新)
• 默认输出含 %usr(用户态 CPU)、%system(内核态 CPU)、%MEM、kB_rd/s(读速率)等字段
用 watch + top 实现“伪交互式”聚焦观察
top 本身支持交互操作(如按 P 排序 CPU、M 排序内存),但 watch 会禁用交互。折中办法是固定视图:
watch -n 3 'top -b -n1 -p $(pgrep -f "python app.py") | head -20'
说明:
• -b -n1 表示批处理模式、只运行 1 次 top
• $(pgrep -f "python app.py") 动态获取匹配命令行的进程 PID(支持模糊匹配)
• head -20 截取关键信息(进程列表+统计头),避免满屏滚动
实用技巧与注意事项
• 退出 watch:按 Ctrl+C,不是 q 或 Esc
• 高亮变动:加 -d 参数,watch 会高亮上一次和本次不同的部分,例如:
watch -d -n 2 'ps aux --sort=-%cpu | head -10'
• 避免命令被截断:长命令建议写成 shell 脚本再调用,例如:
watch -n 5 ./check_myapp.sh
• 权限问题:监控其他用户进程可能需要 sudo,但慎用——不要无脑加 sudo watch,优先用普通用户能查的字段(如自己的进程)










