当前位置:首页>Linux>别再反复敲命令!Linux 自带的 watch 神器,一行命令实现实时监控,运维效率翻倍

别再反复敲命令!Linux 自带的 watch 神器,一行命令实现实时监控,运维效率翻倍

  • 2026-10-06 08:15:15
别再反复敲命令!Linux 自带的 watch 神器,一行命令实现实时监控,运维效率翻倍

做 Linux 运维的朋友,是不是都遇到过这样的场景:想盯着系统内存变化,一遍遍敲free -g;想看磁盘占用有没有飙升,反复输入df -h;监控端口连接数、进程状态,手动执行命令到手软……

重复操作又累又低效,其实 Linux 系统自带一个轻量神器,不用安装、不用配置,一行命令就能自动反复执行指令,实时展示结果变化,它就是watch 命令。

一、watch命令的含义
watch命令的核心功能:周期性执行指定命令,并且全屏实时展示输出结果,高亮显示变化内容。简单说,它就是你的 “自动监控小助手”,默认每 2 秒执行一次目标命令,持续刷新界面,按Ctrl+C就能退出。
watch语法结构
watch [选项] 要执行的命令
不管是系统监控、日志排查、配置文件校验,还是进程状态跟踪,它都能轻松搞定,堪称临时监控的 “瑞士军刀”!
二、watch核心应用场景
watch 的参数不多,记住这 3个最常用(本来有个-t隐藏标题的,部分版本不支持)的,就能满足绝大多数运维、开发需求:

1. -n:自定义刷新间隔(最常用)

默认2秒刷新一次,用-n+数字,可自定义间隔时间(单位:秒),监控高频变化指标调短间隔,低频指标拉长间隔,节省系统资源。
#每1秒刷新一次内存使用情况watch -n 1 free -g#每5秒查看一次磁盘空间watch -n 5 df -h
2. -d:高亮显示变化内容
监控时,两次命令输出的差异部分会被红色高亮标注,一眼就能看到数据变动,排查问题超高效。
#高亮显示系统负载变化watch -d uptime#监控文件变化,差异一目了然watch -d ls -l test.txt

3. -e:命令出错直接退出

当执行的命令报错时,watch 会自动停止刷新并退出,避免无效监控,适合脚本、定时任务场景。

#监控服务状态,出错立即退出watch -e systemctl status nginx

三、watch的8个实战场景

1:系统负载实时监控
快速查看服务器 1/5/15 分钟负载,判断系统是否繁忙:
watch -n 2 uptime

2:内存 / CPU 使用率监控

精准盯紧系统资源,排查内存泄漏、CPU 飙升问题:

#内存监控watch -n 1 -d free -g#CPU使用率监控watch -n 1 -d "top -b -n 1 | grep Cpu"

3:磁盘空间 & IO 监控

防止磁盘爆满、IO 异常导致服务宕机
#磁盘占用监控watch -n 5 -d df -h#磁盘IO性能监控watch -n 5 iostat -x 1
4:端口连接数监控

web 服务必备,监控 80/443 端口连接量,排查流量异常

#监控22端口TCP连接总数watch -n 1 -d "ss -an | grep :80 | wc -l"

5:进程存活状态监控

确保核心服务进程不退出,实时跟踪进程状态

#监控sshd进程,排除自身命令watch -n 2 "ps -ef | grep sshd | grep -v grep"

6:配置文件防篡改监控

等保检测、服务器安全审计,防止配置文件被恶意修改

#通过MD5值校验文件是否被修改watch -d md5sum /etc/nginx/nginx.conf

7:网卡流量实时监控

查看服务器网络进出流量,排查网络拥堵

#监控eth0网卡流量(需安装ifstat,yum -y install ifstat)watch -n 1 "ifstat ens33"

8:数据库连接数监控

实时查看 MySQL 连接数,避免连接满导致服务异常

watch -n 3 "mysql -u root -p12345678 -e 'show status like \"Threads_connected\"'"

四、watch高级组合命令

watch 最强的地方,是能和 Linux 管道、grep、awk 等命令结合,实现复杂的精细化监控,记住一个关键技巧:

1. 过滤核心指标,只看关心的内容

#只监控根分区磁盘占用率,根目录/dev/mapper/centos-rootwatch -n 5 -d "df -h | grep /dev/mapper/centos-root | awk '{print \$5}'"

2. 同时监控多个指标

#一次性查看CPU负载、内存、磁盘占用,根目录的磁盘名称 /dev/mapper/centos-rootwatch -n 3 "echo 'CPU负载:'; uptime | awk -F 'load average:' '{print \$2}'; echo '内存使用:'; free -h | grep Mem; echo '磁盘占用:'; df -h | grep /dev/mapper/centos-root"

3. 异常阈值告警

指标超出阈值自动高亮提示,无需一直盯着屏幕

#磁盘占用超过80%红色告警watch -n 10 "df -h / | awk 'NR==2{gsub(/%/,\"\");if(\$5>80) print \"\033[31m磁盘告警:占用率\"\$5\"%\033[0m\";else print \"磁盘正常: 占用率\"\$5\"%\"}'"

五、注意事项

很多人用 watch 踩坑,其实都是细节没注意,重点关注一下事项:

  • 组合命令不加双引号:命令含管道、重定向时,必须加双引号,否则执行失败
  • 直接监控交互命令:要用非交互模式watch "top -b -n 1"
  • 刷新间隔过短:小于 1 秒的间隔会增加系统负载,根据场景合理设置,其中-n 0.1 可能触发系统负载飙升,生产环境慎用。
  • 特殊字符不转义:awk、sed 中的$符号,需要加\转义
  • 后台运行忘加 nohup:关闭终端想继续监控,需搭配nohup
  • 文件监控场景混淆:实时文件内容监控,用inotifywait比 watch 更高效
六、总结

很多人觉得 zabbix、prometheus 等专业监控工具才好用,但殊不知watch才是临时排障、快速监控的最优解:

  1. 系统自带,无需安装部署

  2. 资源占用极低,不影响业务

  3. 灵活组合命令,适配个性化需求

  4. 一行命令启动,即开即用

平时运维中排查服务器问题、监控临时指标,不用再搭建复杂监控系统,打开终端输入 watch 命令,效率直接拉满!Linux 运维没有那么难,用好这些自带的小工具,就能少加班、高效工作。

赶紧收藏这篇文章,下次遇到重复执行命令的场景,直接掏出 watch 神器!

#运维#linux运维#linux实战#watch监控命令

最新文章

随机文章