当前位置:首页>Linux>Linux命令每日一清单049:watch--周期性命令执行工具速查表

Linux命令每日一清单049:watch--周期性命令执行工具速查表

  • 2026-10-11 08:27:47
Linux命令每日一清单049:watch--周期性命令执行工具速查表

watch是Linux系统中用于周期性执行指定命令并全屏显示输出结果的工具,默认每2秒刷新一次输出。它非常适合监控系统状态的变化,如内存使用、磁盘空间、进程状态等动态信息。

watch的核心价值在于:无需手动重复输入命令,自动刷新显示;支持高亮显示输出变化,便于快速识别变化内容;可设置不同的刷新间隔;当命令输出发生变化时可触发退出或报警。掌握watch是进行系统监控和实时状态跟踪的实用技能。

1. 基本语法

命令说明
watch command
每2秒执行一次命令并刷新输出
watch -n 5 command
每5秒刷新一次
watch -n 1 date
每秒更新一次时间显示
watch -t command
隐藏顶部的标题行(时间、间隔等信息)
watch --help
显示帮助信息

2. 常见监控任务

命令说明
watch free -h
监控内存使用情况
watch df -h
监控磁盘空间使用
watch uptime
监控系统负载和运行时间
watch -n 1 "ps -ef | grep nginx"
每秒监控nginx进程
watch "ss -tulpn"
监控监听端口状态
watch "ls -la"
监控当前目录文件变化
watch "cat /proc/loadavg"
监控CPU负载平均值
watch "dmesg | tail -20"
监控最后20条内核消息

3. 刷新间隔控制

命令说明
watch -n 0.5 command
每0.5秒刷新(最小间隔通常受限于系统)
watch -n 10 command
每10秒刷新一次
watch -t command
隐藏标题行(仅显示命令输出)
watch -p command
尝试以精确间隔执行(减少漂移)
watch -x command arg1 arg2
直接执行命令(不通过sh -c解析)

注意: 刷新间隔不宜过短,尤其是对系统资源消耗较大的命令,建议根据实际需要设置合理间隔。

4. 高亮变化

使用-d选项可以高亮显示不同刷新周期之间的输出差异:

命令说明
watch -d command
高亮显示输出中的变化
watch -d free -h
高亮内存使用变化
watch -d "ip -brief address"
高亮接口状态或地址变化
watch -d -n 1 "cat /proc/loadavg"
每秒高亮负载平均值变化
watch -d=permanent command
永久高亮上次更新的差异区域

5. 管道与引号处理

watch执行的命令会通过sh -c解析,因此管道、重定向等需要使用引号:

命令说明
watch "ps -ef | grep apache"
监控apache进程(使用引号)
watch "ls -lh /var/log | tail"
监控日志目录最后几个文件
watch "grep -c error /var/log/syslog"
重复统计错误日志行数
watch -x ls -lh /var/log
直接执行ls(不通过shell解析)
watch "find /tmp -maxdepth 1 -type f | wc -l"
监控临时目录文件数量
watch "cat /proc/meminfo | grep MemAvailable"
监控可用内存变化

6. 退出条件与提示

命令说明
watch -g command
命令输出发生变化时退出watch
watch -b command
如果命令以非零状态退出时发出蜂鸣
watch -b -n 5 "systemctl is-active nginx"
服务停止时发出蜂鸣
watch -g "cat /tmp/status.txt"
文件内容变化时退出
watch -g "pgrep firefox"
Firefox进程出现(或消失)时退出
watch -b "ping -c 1 8.8.8.8"
ping失败时发出蜂鸣

7. 实用监控场景

命令说明
watch -n 1 "ps -eo pid,%cpu,%mem,cmd --sort=-%cpu | head -20"
实时监控CPU top20进程
watch -n 2 "netstat -i"
监控网络接口流量统计
watch -d "iotop -b -n 1 | head -20"
监控磁盘I/O top20进程
watch "ls -la | wc -l"
监控当前目录文件数量变化
watch -n 10 "date >> ~/monitor.log"
每隔10秒记录时间到日志文件(需使用重定向)
watch "echo 'scale=2; $(cat /proc/loadavg | cut -d" " -f1) / $(nproc) * 100' | bc"
监控CPU使用百分比
watch "tail -n 5 /var/log/syslog"
实时查看系统日志最后5行

8. 实用组合模式

命令说明
watch -n 1 -d "free -m && echo && df -h"
同时监控内存和磁盘(需引号)
watch -n 1 "curl -s -o /dev/null -w '%{http_code}' http://localhost"
监控Web服务器HTTP状态码
watch -g -n 1 "cat /sys/class/net/eth0/operstate"
网络接口状态变化时退出
watch -b -n 5 "systemctl status sshd | grep Active"
SSH服务状态变化时蜂鸣
watch -n 2 "ifconfig eth0 | grep -e 'RX packets' -e 'TX packets'"
监控网卡收发包统计
watch -n 60 "sudo journalctl -u nginx --since '1 minute ago' | tail -10"
每分钟查看nginx最新日志
watch -d "ps aux | sort -nrk 3 | head -5"
高亮显示CPU占用top5进程变化

9. 常用选项速查

选项说明
-n
--interval
-d
--differences
-t
--no-title
-g
--chgexit
-b
--beep
-p
--precise
-x
--exec
-c
--color
-e
--errexit
-w
--no-wrap

10. 输出格式说明

watch输出通常包含以下几部分:

Every 2.0s: date                       hostname: Wed Apr 27 10:30:00 2026

[命令的输出内容...]
  • 第一行:刷新间隔、执行的命令、当前主机名和时间
  • 后续行:命令的实际输出
  • 使用-t可隐藏第一行

11. 故障排查

问题解决方法
管道或重定向不生效
将整个命令用引号括起来;或使用sh -c "command"
屏幕闪烁太频繁
增加刷新间隔(-n);使用-t隐藏标题减少视觉干扰
输出变化难以察觉
添加-d选项高亮差异
命令立即退出
先单独执行命令确认语法正确;检查是否需要引号
需要shell扩展和变量
使用带引号的shell命令而非-x
长输出换行难以阅读
使用-w禁用换行,配合水平滚动查看
颜色输出丢失
使用-c保留ANSI颜色代码
watch: command not found
安装procps包:apt install procps 或 yum install procps

温馨提示: watch是轻量级监控工具,适合实时观察系统状态变化。建议掌握以下技巧:1)监控日志变化时,使用watch -n 1 "tail -n 10 /var/log/syslog"实时查看最新条目;2)使用-d高亮变化,快速定位异常;3)在脚本中结合-g实现条件触发;4)监控生产环境时,避免用过短的间隔(建议≥2秒)减少系统开销;5)使用-t隐藏标题,输出更简洁;6)需要持久化记录时,watch更适合观察而非日志收集。对于复杂的监控需求,建议结合Prometheus、Grafana等专业监控工具。

本文PDF格式下载:

  关注公众号(haopython),请回复: LTWATCH

最新文章

随机文章