watch 是一个Linux的实时监测命令,它实时监测一个命令的运行结果,省得一遍又一遍的手动运行。

最为常用的参数:
-n 表示间隔多少秒执行一次命令
-d 表示高亮,当监控的命令执行结果有变动,则高亮显示。

示例:
实时监控系统的用户登录情况,当有新用户登录,或登出都会高亮显示下。

watch -d -n 1 'who'
Every 1.0s: who                                                     Fri Nov  9 08:55:50 2018

hello    pts/0        2018-11-09 08:45 (:10)
root     pts/1        2018-11-09 08:46 (192.168.254.1)
root     pts/2        2018-11-09 08:49 (192.168.254.1)

CTRL + C可以退出正在执行的watch监控进程。

watch执行的命令可以是多条,多条以逗号分隔。
示例:

watch -d -n 1 'df -h;ls -l'
Every 1.0s: df -h;ls -l                                             Fri Nov  9 08:57:23 2018

文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   17G   14G  3.1G   82% /
devtmpfs                 7.8G     0  7.8G    0% /dev
tmpfs                    7.8G     0  7.8G    0% /dev/shm
tmpfs                    7.8G  8.7M  7.8G    1% /run
tmpfs                    7.8G     0  7.8G    0% /sys/fs/cgroup
/dev/sda1               1014M  143M  872M   15% /boot
tmpfs                    1.6G     0  1.6G    0% /run/user/1005
tmpfs                    1.6G     0  1.6G    0% /run/user/0
总用量 13656
-rw-------.  1 root root     1257 2月  27 2018 anaconda-ks.cfg
drwxr-xr-x   2 root root        6 8月  31 11:29 express
drwxr-xr-x. 13 root root     4096 11月  7 14:31 hbk
-rw-------.  1 root root     1675 7月  24 08:50 huangbaokang
-rw-r--r--.  1 root root      402 7月  24 08:50 huangbaokang.pub
drwxr-xr-x   3 root root      255 9月   5 08:46 node_test
drwxr-xr-x   2 root root       40 8月  30 16:41 ruby_test
-rw-r--r--   1 root root 13950976 7月  25 17:08 swapfile

这条命令可以监控磁盘的使用状况,以及当前目录下文件的变化状况,包括文件的新增、删除和文件修改日期的更新等。

在项目中也通常用tail 或tailf命令,但这两个命令没有高亮的显示,在运维中常常用来监控输出日志,比如nginx日志,tomcat,apache日志等,而watch命令显示将占用一个屏幕,各有各的好处。