首页/系统/Linux 运维命令速查/watch 周期刷新观察状态

watch 周期刷新观察状态

watch 每几秒重跑一条命令:盯日志尾部、连接数、容量变化都很顺手;-d 高亮变化、-n 调间隔,退出即停不占资源。

Linux 运维命令速查系统更新于 2026-10-13

watch 是什么

watch 每隔几秒重新执行同一条命令,并把结果全屏刷新,适合盯住持续变化的状态:日志尾部、连接数、容量水位、负载均值。它属于 procps-ng,退出即停止、不常驻后台,对系统几乎没有负担。加 -d 会高亮两次输出之间的差异,用 -n 调整刷新间隔。

基本信息

所属procps-ng
语法watch [-n 秒] [-d] 命令
关键选项-n 刷新间隔(默认 2 秒)、-d 高亮变化、-t 不显示标题栏
使用要点命令里的管道必须整体加引号传入

典型使用场景

  • 观察磁盘、内存等容量指标的变化趋势
  • 跟踪日志尾部,实时看最新几条记录
  • 盯着连接数、队列长度这类服务指标
  • 变更过程中同时观察多个指标
  • 排查间歇性问题时反复执行同一条诊断命令
  • 把常用诊断命令做成固定的盯屏视图

常用示例

常用示例
watch -n 2 'ss -s'                   # 每 2 秒刷新连接统计
watch -n 5 -d 'df -h /data'          # 容量变化高亮显示
watch -n 1 'cat /proc/loadavg'       # 盯住负载均值
watch -n 2 -d 'ss -tn state established | wc -l'   # 盯住已建立连接数
watch -n 5 'df -h; echo ---; free -m'              # 多条命令组合显示
watch -n 3 -d 'tail -n 5 /var/log/myapp/app.log'   # 盯住日志尾部

常用选项

选项作用说明
-n 秒刷新间隔默认为 2 秒
-d高亮差异两次输出之间变化的部分加重显示
-t隐藏标题栏省下一行显示空间
-b出错时蜂鸣命令返回非零时提醒
整体加引号把命令作为单一参数避免管道作用到 watch 自身
需要看持续滚动的实时日志流时用 tail -F;watch 更适合周期性快照对比,两者的用途并不相同。
命令里的管道必须用引号整体包住,否则 shell 会把管道作用到 watch 上,输出与预期完全不同。
带颜色的命令在 watch 里可能显示成控制字符乱码,需要时给命令加 --color=never,或者调整 TERM 环境变量。
watch 的输出不会写入日志:需要事后复盘时,应把命令输出重定向到文件,而不是指望它替你留痕。
需要同时盯多个指标时,把它们串进同一条命令用分隔符隔开,比开多个终端窗口更省注意力,也更容易对比。

易错点

  • 管道不加引号:管道被 shell 提前解析,watch 拿到的是残缺命令
  • 用 watch 追实时日志流:每次都重绘而不是追加,滚动内容看不全,应改用 tail -F
  • 刷新间隔设得过短:命令自身的开销被放大,反而增加系统负担
  • 在 watch 里跑交互式或高开销命令:刷新期间互相干扰,输出不稳定

数据来源与参考

  • man 1 watch(procps-ng)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌