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

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 展示时,应换用
htop、glances、netdata或 Prometheus + Grafana - 在远程 SSH 会话中使用 watch,注意网络中断可能导致界面卡住,可配合
tmux或screen保持会话
它不复杂,但容易忽略细节。掌握好 -n、-d、-t 和引号的配合,watch 就能成为你排查问题时最顺手的“小雷达”。










