スリープしたい(sleep)
$ sleep 5
sleepは、指定した時間だけ処理を停止するコマンドです。
スクリプトの中で「少し待ってから次に進む」「ループの中で間隔をあける」といった用途に使います。
秒を指定したい
$ sleep 3
$ echo "3秒待った"
引数に数値を渡すと、その秒数だけ停止します。
小数も使えます(sleep 0.5で0.5秒)。
分・時間・日を指定したい(m / h / d)
$ sleep 5m # 5分
$ sleep 1h # 1時間
$ sleep 1d # 1日
数値のあとに単位を付けられます。
s… 秒(省略時のデフォルト)m… 分h… 時間d… 日
注釈
単位が使えるのはGNU版(Linux)のsleepです。
macOS標準のsleepは秒のみで、sleep 5mはエラーになります。
macOSではbrew install coreutilsで入るgsleepがGNU版です。
ループで間隔をあけたい
$ while true; do
date
sleep 60
done
無限ループの中にsleepを入れると、一定間隔で処理を繰り返せます。
上の例は1分ごとに時刻を表示し続けます。
sleepを入れないと、ループがCPUを使い切って回り続けます。
起動を待ってから実行したい
$ my-server &
$ sleep 2
$ curl http://localhost:8080/
バックグラウンドで起動したプロセスの準備を待つために、固定秒数のsleepを挟むことがあります。
ただし待ち時間は環境で変わるため、確実に待つならuntilループで
「接続できるまで待つ」と書くほうが安定します。