watch命令可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。在Linux下,watch是周期性的执行下个程序,并全屏显示执行结果。可以拿他来监测想要的一切命令的结果变化,比如 tail 一个 log 文件,ls 监测某个文件的大小变化。

1、命令功能:
可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令

FreeBSD下的watch命令是查看其它用户的正在运行的操作,watch允许你偷看其它terminal正在做什么,该命令只能让超级用户使用。

2、命令格式+参数:

watch[参数][命令]

-n或--interval  watch缺省每2秒运行一下程序,可以用-n或-interval来指定间隔的时间。
-d或--differences  用-d或--differences 选项watch 会高亮显示变化的区域。 而-d=cumulative选项会把变动过的地方(不管最近的那次有没有变动)都高亮显示出来。
-t 或-no-title  会关闭watch命令在顶部的时间间隔,命令,当前时间的输出。
-h, --help 查看帮助文档

 

3、使用实例

示例1:每隔一秒高亮显示网络链接数的变化情况

watch -n 1 -d netstat -ant

说明:
其它操作:
切换终端: Ctrl+x
退出watch:Ctrl+g

 

示例2:每隔一秒高亮显示http链接数的变化情况

watch -n 1 -d 'pstree|grep http'

说明:
每隔一秒高亮显示http链接数的变化情况。 后面接的命令若带有管道符,需要加''将命令区域归整

 

示例3:实时查看模拟攻击客户机建立起来的连接数

watch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'

 

示例4:监测当前目录中 scf' 的文件的变化

watch -d 'ls -l|grep scf'

 

实例5:10秒一次输出系统的平均负载

watch -n 10 'cat /proc/loadavg'

 

实例6:查看网络流量

查看eth0 网卡,按bytes 单位显示,每隔1s 刷新一下

watch -n 1 "/sbin/ifconfig eth0|grep bytes"

tx 发送,rx 接收,一般rx 外网指的是下载,tx 指的是上传。内网恰恰相反

 

实例7:查看ps进程

# watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem | head -15'   #用来实时捕捉ps显示进程
# watch -n 1 'ps -o pid,uname,cmd,rsz,pcpu --sort -rsz  -u root|head -15'  #这是单引号。将root用户,实际内存使用数前15名打印出来。