歡迎光臨
每天分享高質量文章

解放你的雙手,一個命令幫你減負

作者:守望,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的使用場景。在實際情況中,可以根據自己的場景情況,選擇不同的使用方式。

贊(0)

分享創造快樂