是不是經常會遇到需要觀察某個內容,為了持續觀察而反覆執行某個命令?也許你可以寫一個簡單的腳本幫你反覆執行,但是有更簡單方便的方法為什麼不用呢? ...
前言
是不是經常會遇到需要觀察某個內容,為了持續觀察而反覆執行某個命令?也許你可以寫一個簡單的腳本幫你反覆執行,但是有更簡單方便的方法為什麼不用呢?今天要介紹的便是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
(這裡省略,變化內容會高亮,非常便於觀察)
微信公眾號【編程珠璣】:專註但不限於分享電腦編程基礎,Linux,C語言,C++,演算法,資料庫等編程相關[原創]技術文章,號內包含大量經典電子書和視頻學習資源。歡迎一起交流學習,一起修煉電腦“內功”,知其然,更知其所以然。
執行出錯時退出
假設你要運行某個命令,希望它的退出碼不是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的使用場景。在實際情況中,可以根據自己的場景情況,選擇不同的使用方式。
微信公眾號【編程珠璣】:專註但不限於分享電腦編程基礎,Linux,C語言,C++,演算法,資料庫等編程相關[原創]技術文章,號內包含大量經典電子書和視頻學習資源。歡迎一起交流學習,一起修煉電腦“內功”,知其然,更知其所以然。