スリープしたい(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ループで 「接続できるまで待つ」と書くほうが安定します。

リファレンス