watch命令
watch是一個(gè)非常實(shí)用的命令,基本所有的Linux發(fā)行版都帶有這個(gè)小工具,如同名字一樣,watch可以幫你監(jiān)測(cè)一個(gè)命令的運(yùn)行結(jié)果,省得你一遍遍的手動(dòng)運(yùn)行。在Linux下,watch是周期性的執(zhí)行下個(gè)程序,并全屏顯示執(zhí)行結(jié)果。你可以拿他來(lái)監(jiān)測(cè)你想要的一切命令的結(jié)果變化,比如 tail 一個(gè) log 文件,ls 監(jiān)測(cè)某個(gè)文件的大小變化,看你的想象力了!
1.命令格式:
watch[參數(shù)][命令]
2.命令功能:
可以將命令的輸出結(jié)果輸出到標(biāo)準(zhǔn)輸出設(shè)備,多用于周期性執(zhí)行命令/定時(shí)執(zhí)行命令
3.命令參數(shù):
- -n或--interval watch缺省每2秒運(yùn)行一下程序,可以用-n或-interval來(lái)指定間隔的時(shí)間。
- -d或--differences 用-d或--differences 選項(xiàng)watch 會(huì)高亮顯示變化的區(qū)域。 而-d=cumulative選項(xiàng)會(huì)把變動(dòng)過(guò)的地方(不管最近的那次有沒(méi)有變動(dòng))都高亮顯示出來(lái)。
- -t 或-no-title 會(huì)關(guān)閉watch命令在頂部的時(shí)間間隔,命令,當(dāng)前時(shí)間的輸出。
- -h, --help 查看幫助文檔
引言
有時(shí)候你需要不斷的執(zhí)行某個(gè)命令,追蹤其輸出產(chǎn)生的變化情況。你可能會(huì)寫(xiě)一個(gè)死循環(huán)來(lái)做這件事情:
while :
do
clear
commands
sleep 1
done
然而實(shí)際上linux中有一個(gè) watch 命令能夠幫你做這件事情。它會(huì)定期執(zhí)行指定的程序并將結(jié)果全屏輸出。
watch 的使用方法很簡(jiǎn)單,只需要
watch 命令
就行了,這樣 watch 命令會(huì)每隔兩秒執(zhí)行一次該該命令,并全屏輸出執(zhí)行結(jié)果。

從上圖可以看出,第一行中的 Every 2.0s: 表示 watch 每隔2秒執(zhí)行一次命令。后面的 date 為要執(zhí)行的命令。再后面的 T520: Thu May 10 16:55:23 2018 是主機(jī)名以及執(zhí)行命令的時(shí)間。
在下面,從第二行開(kāi)始就是命令執(zhí)行的時(shí)間了。
通過(guò) -n INTERVAL 你也可以設(shè)置重復(fù)執(zhí)行命令的間隔時(shí)間,比如我可以調(diào)整為每5秒中執(zhí)行一次 date 命令
不僅如此,通過(guò) -d 選項(xiàng), watch 還能高亮顯示兩次輸出中不同的部分,這個(gè)功能相當(dāng)實(shí)用

除了高亮顯示輸出中改變的部分外,你也可以設(shè)置讓 watch 發(fā)現(xiàn)結(jié)果有改變時(shí)退出循環(huán)執(zhí)行,方法是使用 -g/--chgexit 選項(xiàng)
默認(rèn)情況下, watch 并不會(huì)關(guān)心命令的執(zhí)行結(jié)果是否成功

但你可以讓 watch 檢測(cè)命令的返回值,當(dāng)命令運(yùn)行返回非0時(shí)發(fā)出蜂鳴(-b/–beep)或者直接退出(-e/–errexit)。

最后,若你希望 watch 只顯示出命令的執(zhí)行結(jié)果,而不要顯示第一行的那些信息,那么可以使用 -t 選項(xiàng)關(guān)閉title的顯示

總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。