Linux 定時執行程式 並 監看結果 - watch

在 Linux 上, 需持續執行某種監看的指令, 或每秒執行某個程式或做某些動作, 例如:

要改大量的程式, 需要人工 review, 會做 grep "abc" *, 然後把這些檔案一個一個檢查, 再做修改, 可能有下述的作法:

  • 每改完一個檔案, 就重新再 grep 看一次, 再繼續改下一個檔案.
  • 將 grep 的結果, 貼到記事本, 每改完一行就刪一行, 全部完成再 grep 一次.

除了上述做法外, 可以考慮使用 watch - execute a program periodically, showing output fullscreen.

範例:

  • watch grep abc * # 預設每2秒會執行一次 "grep abc *" 的動作, 將結果顯示出來.
  • watch -n 60 grep abc * # -n 秒數, 60 秒執行一次 grep 動作
  • watch -d 'ls -l' # -d 會把 這次執行 跟 上次執行 不同的地方反白出來, 看出 diff
  • watch -d 'ls -l | fgrep joe'
  • watch -n 1 "ss -t -a | grep 11211 | awk '{print \$5}' | awk -F: '{print \$1}' | sort | uniq -c" # 要用到 awk 和 ',要把 $ 加上 \
  • watch -n 1 "(date '+TIME:%H:%M:%S'; ss -t -a | grep 11211 | awk '{print \$5}' | awk -F: '{print \$1}' | sort | uniq -c) | tee -a logfile" # 監控加上靠 tee 寫 logfile

其它應用

  • 用 crontab 執行程式, 時間範圍最小是以 分(minute) 為單位, 可以用程式搭配 flock / lockf 等來做更小範圍的監控.
  • => 不過, 要做到這麼小範圍的(以 秒(second) 為單位), watch + screen 或許是另外一個選擇~ 🙂

註: 感謝 Mat 介紹此好工具~ 🙂


關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 My_Note-Unix。將永久鏈結加入書籤。

Linux 定時執行程式 並 監看結果 - watch 有 1 則回應

  1. Treker 說道:

    推一下, 省去寫個小loop的時間 🙂

發表迴響