Linux 使用 watch 持续监控系统状态

3次阅读

watch 是 linux 中用于周期性执行命令并全屏显示输出的监控工具,支持自定义间隔(-n)、高亮变化(-d)、隐藏标题(-t)等选项,适合实时查看系统状态,但不适合长期无人值守或告警场景。

Linux 使用 watch 持续监控系统状态

watch 是 Linux 中一个轻量但实用的命令,用于周期性执行指定命令并全屏显示其输出,特别适合实时监控系统状态(如 CPU、内存、进程、磁盘等)的变化。

基础用法与常用选项

默认每 2 秒运行一次命令,按 Ctrl+C 退出:

  • watch ls -l —— 每 2 秒刷新一次当前目录列表
  • watch -n 1 free -h —— 每 1 秒执行 free -h 查看内存使用
  • watch -d df -h —— 高亮显示变化的字段(如磁盘使用率变动)
  • watch -t ps aux --sort=-%cpu | head -10 —— 去掉标题栏,只看 CPU 占用最高的 10 个进程

监控常见系统指标示例

直接复制粘贴即可使用:

  • CPU 和负载watch -n 2 "uptime && echo '---' && top -bn1 | head -15"
  • 内存与缓存watch -d 'free -h && echo && cat /proc/meminfo | grep -E "^(Mem|Cached|Swap)"'
  • 磁盘 I/O 和空间watch -n 3 'df -h /; echo; iostat -x 1 2 | tail -5'(需安装 sysstat
  • 网络连接数watch -n 2 'ss -s; echo; ss -tuln | wc -l'

提升可读性与实用性的小技巧

让监控更清晰、更稳定:

  • 用单引号包裹整个命令,避免 shell 提前解析变量或管道
  • -c 参数启用颜色(如果命令本身支持,如 ls --color
  • -x 执行复杂命令(如含重定向或子 shell),例如:watch -x bash -c 'echo $(date): $(loadavg)'
  • 终端窗口调大些,避免内容被截断;部分终端支持鼠标滚轮查看历史输出(非 watch 自带,依赖终端)

注意边界与替代方案

watch 不适合长期无人值守监控,也不处理告警:

  • 超长命令建议写成脚本再调用,避免命令行过长或难以维护
  • 需要日志记录、阈值触发或 Web 展示时,应换用 htopglancesnetdataprometheus + grafana
  • 在远程 ssh 会话中使用 watch,注意网络中断可能导致界面卡住,可配合 tmuxscreen 保持会话

它不复杂,但容易忽略细节。掌握好 -n、-d、-t 和引号的配合,watch 就能成为你排查问题时最顺手的“小雷达”。

text=ZqhQzanResources