sujingjhong.com


Shell / 在 macOS 上手作 watch

最近在解一個效能問題。剛好有一項需求是要定時存取伺服器,看伺服器有無實際作用。所以需要用一個 curl 輪詢特定路徑。看伺服器是不是在中途崩潰,或是怎麼了。

主管就說可以用 watch一個可以週期性執行任務的 linux 指令

不過就在我向終端機輸入:

$ watch
zsh: command not found: watch

GG囉,看來 macOS 並沒有此指令,這時可以考慮用 brew 安裝。直接輸入:

$ brew install watch

但這時候就想說,目前就是一個簡單輪詢的任務,不太想裝東西。那就只好手刻一個。例如每 N 秒去拉一次 google.com 的首頁回來:

#!/bin/bash
# usage: watch.sh <your_command> <sleep_duration>

while :; do
  cmd=$(curl -s -X GET https://google.com)
  echo "$(date) ${cmd}"
  sleep "$1"
done

執行時,例如每 5 秒執行一次:

$ bash watch.sh 5

就可以啦