7

使用watch帮你重复执行命令

 3 years ago
source link: https://www.lujun9972.win/blog/2018/05/10/%E4%BD%BF%E7%94%A8watch%E5%B8%AE%E4%BD%A0%E9%87%8D%E5%A4%8D%E6%89%A7%E8%A1%8C%E5%91%BD%E4%BB%A4/index.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

使用watch帮你重复执行命令

有时候你需要不断的执行某个命令,追踪其输出产生的变化情况。你可能会写一个死循环来做这件事情:

while :
do
    clear
    commands
    sleep 1
done

然而实际上linux中有一个 watch 命令能够帮你做这件事情。它会定期执行指定的程序并将结果全屏输出。

watch 的使用方法很简单,只需要

watch 命令

就行了,这样 watch 命令会每隔两秒执行一次该该命令,并全屏输出执行结果。 linux_watch01.gif

从上图可以看出,第一行中的 Every 2.0s: 表示 watch 每隔2秒执行一次命令。后面的 date 为要执行的命令。再后面的 T520: Thu May 10 16:55:23 2018 是主机名以及执行命令的时间。

在下面,从第二行开始就是命令执行的时间了。

通过 -n INTERVAL 你也可以设置重复执行命令的间隔时间,比如我可以调整为每5秒中执行一次 date 命令

watch -n 5 date

不仅如此,通过 -d 选项, watch 还能高亮显示两次输出中不同的部分,这个功能相当实用

watch -d -n 1 date

linux_watch02.gif

除了高亮显示输出中改变的部分外,你也可以设置让 watch 发现结果有改变时退出循环执行,方法是使用 -g/--chgexit 选项

watch -g free

默认情况下, watch 并不会关心命令的执行结果是否成功 screenshot-56.png

但你可以让 watch 检测命令的返回值,当命令运行返回非0时发出蜂鸣(-b/--beep)或者直接退出(-e/--errexit)。

watch -e wrong_commands

screenshot-57.png

最后,若你希望 watch 只显示出命令的执行结果,而不要显示第一行的那些信息,那么可以使用 -t 选项关闭title的显示

watch -t date

screenshot-58.png


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK