作者:守望,Linux應用開發者,目前在公眾號【程式設計珠璣】 分享Linux/C/C++/資料結構與演演算法/工具等原創技術文章和學習資源。
前言
是不是經常會遇到需要觀察某個內容,為了持續觀察而反覆執行某個命令?也許你可以寫一個簡單的指令碼幫你反覆執行,但是有更簡單方便的方法為什麼不用呢?今天要介紹的便是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的使用場景。在實際情況中,可以根據自己的場景情況,選擇不同的使用方式。