先来看几个基础用法:watch 命令默认每 2 秒执行一次后续指令。例如,想实时监控网络状态,直接输入 watch ifconfig 即可。如果觉得默认间隔太慢,希望每 2 秒刷新一次并高亮显示变化内容,可以用 watch -d ifconfig。只想针对特定网卡?watch -d ifconfig eth0 就能满足需求。更进一步,若只想关注流量数据——watch -d 'ifconfig eth0 | grep bytes',这样每 2 秒只显示 eth0 网卡的流量部分,且变化区域会自动高亮。
当然,Linux watch 命令的用途远不止查看网络。例如,用它来监测文件变动——watch ls -la file,每两秒检查一次 file1 的文件大小是否发生变化。退出也很简单,按下 ctrl+c 即可。
watch 命令实例详解
watch 几乎是所有 Linux 发行版自带的实用工具,名称直白:它帮你「持续观察」某条命令的执行结果,省去反复手动输入的麻烦。其工作方式是周期性地运行指定程序,并将结果全屏输出。你可以用 watch 监视任何值得追踪的变化:比如用 tail 查看日志文件,或借助 ls 观察某个文件大小是否增长——想象力有多大,它的用途就有多广。对于系统管理员和运维人员来说,watch 是实时监控 Linux 系统和网络状态的利器。
1.命令格式
watch [参数] [命令]
2.命令功能
将命令的输出结果实时显示在标准输出设备上,常用于周期性执行命令、定时监控场景,是 Linux 系统管理中的高频操作。
3.命令参数
- -n 或 --interval:默认间隔为 2 秒,可通过
-n或--interval指定任意秒数,实现自定义刷新频率。 - -d 或 --differences:添加此参数后,watch 会高亮显示变化的部分。若使用
-d=cumulative,则会将所有曾经变动过的位置都高亮标记(无论最近一次是否变化)。 - -t 或 --no-title:关闭 watch 顶部的时间间隔、命令及当前时间信息,只显示命令输出结果。
- -h, --help:查看帮助文档。
4.使用实例
实例1:每隔一秒高亮显示网络连接数的变化情况
命令:watch -n 1 -d netstat -ant
输出结果示例:
Every 1.0s: netstat -ant Mon Feb 27 20:49:38 2017 Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 192.168.0.210:22 192.168.0.5:51577 ESTABLISHED tcp6 0 0 :::80 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN
其他实用快捷键:终端切换按 Ctrl+x,退出 watch 按 Ctrl+g。
实例2:每隔一秒高亮显示 HTTP 连接数的变化情况
命令:watch -n 1 -d 'pstree | grep http'
注意:如果命令中包含管道符,需将整个命令用单引号括起来,避免 shell 误解。watch 结合 grep 能有效监控特定进程或服务的状态。
实例3:实时查看模拟攻击客户机建立起来的连接数
命令:watch 'netstat -an | grep:21 | grep <客户机的IP> | wc -l'
此命令可用于安全监控场景,实时统计特定 IP 对 21 端口的连接数量,帮助运维人员快速识别异常连接。
实例4:监测当前目录中 scf 文件的变化
命令:watch -d 'ls -l | grep scf'
通过 watch 配合 ls 和 grep,可秒级跟踪指定文件的属性变动,适用于文件完整性检测或日志轮转监控。
实例5:10秒一次输出系统的平均负载
命令:watch -n 10 'cat /proc/loada vg'
输出结果示例:
Every 10.0s: cat /proc/loada vg Mon Feb 27 20:54:45 2017 0.01 0.04 0.05 1/132 6335
