建站服務(wù)器
有時候我們需要重復(fù)執(zhí)行某個
命令
,觀察某個文件和某個結(jié)果的變化情況。可以寫
腳本
去實(shí)現(xiàn)這些需求,但是有更簡單的方法,本文檔要介紹的就是watch
命令
。
1. 以固定時間反復(fù)執(zhí)行某個命令
root@jaking-virtual-machine:~# watch -n 1 cat hello.txt
every 1.0s: cat hello.txt
jaking-virtual-machine: tue mar 19 19:13:33 2019
hello world!
hello jaking!
2. 高亮變化內(nèi)容
root@jaking-virtual-machine:~# watch -d uptime #為了突出變化部分,可以使用 -d(difference)參數(shù)。
every 2.0s: uptime
jaking-virtual-machine: tue mar 19 19:14:01 2019
19:14:01 up 3 days, 12:53, 2 users, load average: 0.01, 0.01, 0.00
(這里省略,變化內(nèi)容會高亮,非常便于觀察)
3. 執(zhí)行出錯時退出
root@jaking-virtual-machine:~# watch -n 1 -e cat hello.txt #運(yùn)行某個命令,當(dāng)退出碼不是0時,即命令執(zhí)行出錯時就結(jié)束,可以使用 -e(errexit)參數(shù)。
every 1.0s: cat hello.txt
jaking-virtual-machine: tue mar 19 19:16:49 2019
打開另一個終端,執(zhí)行mv操作,可以看到效果:
root@jaking-virtual-machine:~# mv hello.txt /tmp
#新終端
root@jaking-virtual-machine:~# watch -n 1 -e cat hello.txt
#舊終端
every 1.0s: cat hello.txt
jaking-virtual-machine: tue mar 19 19:16:49 2019
cat: hello.txt: no such file or directory
4. 執(zhí)行結(jié)果變化時退出
root@jaking-virtual-machine:~# watch -n 1 -g 'du -b hello.txt'
every 1.0s: du -b hello.txt
jaking-virtual-machine: tue mar 19 19:23:41 2019
27 hello.txt
打開另一個終端執(zhí)行echo操作,可以看到效果:
root@jaking-virtual-machine:~# echo "watch -n -l -g command" >> hello.txt
#新終端
root@jaking-virtual-machine:~# watch -n 1 -g 'du -b hello.txt'
#舊終端
every 1.0s: du -b hello.txt
jaking-virtual-machine: tue mar 19 19:21:55 2019
50 hello.txt
#此時watch -n 1 -g 'du -b hello.txt'運(yùn)行結(jié)束
root@jaking-virtual-machine:~#