做什么
定期执行命令,全屏显示输出——盯着某个数字变化最方便。
实战
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)自己也消耗资源——服务器上注意