做什么

定期执行命令,全屏显示输出——盯着某个数字变化最方便。

实战

watch date                          # 每 2 秒看一次时间(默认间隔)
watch -n 5 date                     # 每 5 秒
watch -n 1 free -h                  # 每秒看内存
watch -n 0.5 'ls -la'               # 0.5 秒(亚秒级)
watch -d ls -la                     # 高亮变化部分
watch -d -n 1 'ps aux | head'       # 高亮 + 每秒
watch -t date                       # 不显示顶部标题栏
watch -c 'tail -n 5 /var/log/syslog | grep --color=auto ERROR'   # 保留颜色

常用参数

参数 含义
-n N 间隔 N 秒(支持小数)
-d 高亮变化的部分
-t 不显示标题
-c 保留 ANSI 颜色
-x 把命令视为 exec 形式
-g 输出有变化时退出
-e 错误时退出
-b 退出时响铃

典型场景

1. 监控某文件大小

watch -n 1 'ls -lh /backup/big.tar'

2. 跟踪进程

watch -d 'ps aux | grep nginx | grep -v grep'

3. 等待服务起来

# 等到 curl 返回 200 才退出
watch -g 'curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/health | grep 200'

4. 网络连接数

watch -n 2 'ss -s'

5. 磁盘空间监控

watch -n 30 'df -h | grep -v tmpfs'

退出

Ctrl+C

  • 命令含管道 / 引号要包整个在 watch 后单引号里:watch 'cmd | filter'
  • watch 输出截到屏幕宽度——窄终端会看不全
  • 高频 watch(如 -n 0.1)自己也消耗资源——服务器上注意