watch — 定時重複執行指令並顯示輸出

定時重複執行指令並即時更新顯示,用於持續監控系統狀態。

語法

watch [選項] 指令

常用選項

選項 說明 範例
-n 秒數 設定刷新間隔(預設 2 秒,最小 0.1) watch -n 1 df -h
-d 高亮顯示兩次執行間有變化的部分 watch -d ls -la
-t 不顯示標頭列(時間、指令等) watch -t date
-p 精確計時(每次執行後等待剛好 N 秒) watch -p -n 1 date
-e 若指令回傳非 0 則暫停並等待按鍵 watch -e my-check.sh
-g 若輸出改變則退出(適合腳本觸發) watch -g df /

使用範例

範例 1:每秒監控磁碟使用量

即時觀察磁碟使用量的變化,按 Ctrl+C 停止。

$ watch -n 1 df -h
Every 1.0s: df -h
Filesystem  Size  Used  Avail  Use%  Mounted on
/dev/sda1   50G   20G   28G    42%   /
範例 2:高亮顯示變化(監控程序)

使用 -d 讓有變化的部分以高亮(反白)顯示,一眼看出差異。

$ watch -d -n 2 ps aux --sort=-%cpu
(每 2 秒更新,有變化的數值高亮顯示)
範例 3:監控 CPU 和記憶體使用

每秒監控 CPU 和記憶體的即時狀態。

$ watch -n 1 'free -h && echo && ps aux --sort=-%cpu | head -6'
(每秒更新顯示記憶體狀態和 CPU 占用最高的程序)
範例 4:監控 HTTP 狀態

每 5 秒檢查一次服務是否回應,適合部署時的簡單監控。

$ watch -n 5 'curl -s -o /dev/null -w "%{http_code}" http://localhost/'
200

延伸閱讀