98

解放你的双手-watch命令详解

 5 years ago
source link: https://www.yanbinghu.com/2019/03/08/61352.html?amp%3Butm_medium=referral
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.

是不是经常会遇到需要观察某个内容,为了持续观察而反复执行某个命令?也许你可以写一个简单的脚本帮你反复执行,但是有更简单方便的方法为什么不用呢?今天要介绍的便是watch命令。

以固定时间反复执行某个命令

比如说,你需要使用cat查看某个文件内容,由于它不断更新,你需要反复执行并观察,那么你可以使用watch:

$ watch -n 1 cat test.txt
Every 1.0s: cat test.txt 
hello

watch的 -n参数 指定了反复执行的间隔,上面表示每隔1秒就执行cat test.txt命令。

高亮变化内容

除了能够反复执行某个命令之外,还可以高亮变化的内容。例如,你需要观察平均负载情况,可以使用:

$ uptime
20:12:12 up  1:46,  1 user,  load average: 0.77, 0.75, 0.87

为了突出变化部分,你可以使用 -d(difference)参数 ,它会高亮变化的内容:

watch -d uptime
(这里省略,变化内容会高亮,非常便于观察)

执行出错时退出

假设你要运行某个命令,希望它的退出码不是0时,即命令执行出错时就结束,那么你可以使用-e(errexit)参数:

$ watch -n 1 -e cat test.txt

此时若删掉test.txt文件,它将会停止执行该命令。

执行结果变化时退出

前面我们说到可以观察高量变化内容,我们也可以利用 -g(chgexit)参数 使得结果发现变化时,退出执行:

$ watch -n 1 -g command

例如,我们观察某个文件大小是否有变换,发生变化时停止观测,这个时候可以使用:

$ watch -n 1 -g 'du -b test.txt'

这里需要注意,后面du的命令需要用引号引起来,以便被当成一个完整的命令,一旦test.txt文件大小变化了,将会退出执行。

总结

前面的举例可能不恰当,但是却说明了watch的使用场景。在实际情况中,可以根据自己的场景情况,选择不同的使用方式。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK