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 的输出不会写入日志:需要事后复盘时,应把命令输出重定向到文件,而不是指望它替你留痕。
需要同时盯多个指标时,把它们串进同一条命令用分隔符隔开,比开多个终端窗口更省注意力,也更容易对比。