linux命令: watch 监视命令(高逼格必备)

我们在执行linux命令的时候,有时候需要持续查看结果,此时需要反复执行某一个命令。

比如查看k8s pod 是否拉起,或者查看进程是否删除。一般就通过

⬆+回车 的组合不断的点,直到具体的结果。

但是这太麻烦了,而且太low,作为一个成熟的操作系统,(防盗连接:本文首发自http://www.cnblogs.com/jilodream/ )linux早已有相应的命令。

watch 命令

watch 在英语中的的本意是 持续监视/站岗/守望/观察的意思

watch 命令也很简单:

watch + <要持续观察的命令>

举个例子

复制代码
watch ps -ef

输出:

复制代码
Every 2.0s: ps -ef                                                                                     kcs-m-b8hn9: Fri Oct  9 17:57:46 2026

UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0  2025 ?        08:14:30 /usr/lib/systemd/systemd --system --deserialize 20
root          2      0  0  2025 ?        00:00:45 [kthreadd]
root          3      2  0  2025 ?        00:00:00 [rcu_gp]
root          4      2  0  2025 ?        00:00:00 [rcu_par_gp]
root          6      2  0  2025 ?        00:00:00 [kworker/0:0H-kblockd]
root          8      2  0  2025 ?        00:00:00 [mm_percpu_wq]
....

红色不部分是标题行,

左上角表示持续监视的周期,默认是每两秒执行一次。

右上角是当前监视的时间点。下边就是执行命令的结果了。

如果我们想要执行管道命令,可以通过单/双引号,包裹要执行的命令。如下:

复制代码
[root@kcs ~]#  watch "ps -ef | grep java"
[root@kcs ~]#  watch 'ps -ef | grep java'

除此之外,watch 还提供了一些高级参数,来提升watch的能力:

-n 调整watch命令的监视周期,单位是s

如下:

复制代码
watch -n 0.1 'ps -ef |grep java'

这种就是每0.1秒执行一次

-d d是difference的意思,作用是高亮本次执行的结果和上一次执行结果的差异

效果如下图:

-t 不显示标题行,就是屏蔽红色字体写的 周期/当前时间点这些数据,(防盗连接:本文首发自http://www.cnblogs.com/jilodream/ )平常很少用,会在写复杂脚本的时候,去掉头部数据

-g 当发生变化时退出watch监控,也就是当发现本次监控和上一次监控存在不同时,直接立刻退出监控界面

-e 当执行的命令返回错误状态(非0)时,退出,

啥时候会返回错误状态呢,比如我们进入一个不存在的路径

watch -n 0.1 -e 'cd abc'

效果如下图,此时不是立刻退出监控界面,而是按任意键