sleep は指定した時間だけ処理を停止(待機)します。整数秒だけでなく、GNU環境では分・時・日などの単位や小数秒も指定できます。
実務では、リトライ間隔の待機、ジョブ間のクールダウン、バックオフ制御などに使います。
構文(Syntax)
# POSIX(整数秒)
sleep SECONDS
# GNU coreutils(拡張)
sleep NUMBER[SUFFIX]...
# SUFFIX: s(秒), m(分), h(時), d(日)
# 複数引数で合算指定が可能(例: 1m 30s)
主なオプション一覧
sleepは基本的にオプションをほとんど持ちません(GNUは--help,--versionのみ)。
ここでは実用上よく使う指定方法も併せて掲載します。
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | 秒数で待機(POSIX互換) | sleep 5 |
| 時間サフィックス | 単位付きで待機(GNU拡張) | sleep 2m / sleep 1h / sleep 1d |
| 小数秒 | ミリ秒レベルの待機(GNU拡張) | sleep 0.2 |
| 複数指定 | 引数を合算して待機(GNU拡張) | sleep 1m 30s |
--help | 使い方を表示 | sleep --help |
--version | バージョンを表示 | sleep --version |
実行例
指定秒数だけ待つ(基本)
説明:最も基本的な使い方。ここでは 2 秒だけ停止します。
コマンド
sleep 2
出力例:なし(2秒後に次の処理へ進む)
単位を使って待つ(GNU拡張)
説明:1分30秒のように、人間に読みやすい形で指定できます。
コマンド
sleep 1m 30s
出力例:なし(合計90秒待機)
小数秒で短い待機(GNU拡張)
説明:APIリクエスト間のクールダウンなど、細かい間隔で待機します。
コマンド
sleep 0.1
出力例:なし(0.1秒待機)
リトライ処理の間隔に使う
説明:簡易リトライ。失敗したら1秒待って最大3回トライします。
コマンド
for i in 1 2 3; do
echo "try $i"
some_command && break
sleep 1
done
出力例(例)
try 1
try 2
try 3
エラー例:不正な時間指定
説明:読み取れない文字列を与えるとエラー終了します(GNUの例)。
コマンド
sleep xyz
echo $?
出力例(例)
sleep: invalid time interval 'xyz'
Try 'sleep --help' for more information.
1
関連コマンド
timeout:指定時間でコマンドを強制終了したいときに使うラッパー。wait:バックグラウンドジョブの終了を待つ。sleepと組み合わせて制御可能。read -t:タイムアウト付きの入力待ちで処理を一時停止。date:時刻取得・計算の補助に。at/cron/systemd timers:指定時刻・周期での実行スケジューリング。
備考
- 環境差:POSIXの
sleepは整数秒のみ。GNU coreutils はs/m/h/dの単位や小数、複数引数の合算をサポート。BusyBox でも多くの環境で小数が利用可能ですが、最小仕様は整数秒です。 - シグナル:
Ctrl+C(SIGINT)などのシグナルで待機は中断され、非ゼロで終了することがあります。必要に応じてtrapでハンドリングしてください。 - 権限:一般ユーザーで利用可。
sudoは不要です。 - 精度:実際の待機時間はスケジューラ等の影響を受け、指定よりわずかに長くなることがあります。
- 設定ファイル:関連する設定ファイルはありません(純粋なユーティリティ)。
参考
- POSIX
sleep仕様(The Open Group)
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sleep.html - GNU coreutils:
sleepの解説
https://www.gnu.org/software/coreutils/manual/html_node/sleep-invocation.html sleep(1)マンページ(Linux)
https://man7.org/linux/man-pages/man1/sleep.1.html

コメント