はじめに
こんにちは!今回はsleepコマンドについて解説します。
sleepは、指定した時間だけプログラムの実行を待機(スリープ)させるコマンドです。スクリプトで遅延処理が必要な時に活躍します。
シンプルですが、スクリプトを書くなら必須レベルで使いますよ。
sleepコマンドとは
sleepは、指定された時間の間プロセスを停止する外部コマンドです。
主な使い道:
- スクリプトの遅延処理 - 特定の時間待機
- リトライロジック - 失敗時に数秒待ってリトライ
- ポーリング処理 - 定期的に処理を繰り返す
- 処理の分散 - 複数プロセスの実行タイミングを制御
- タイムアウト組み合わせ - タイムアウト機能の実装
時間単位は秒(s)、分(m)、時間(h)、日(d)で指定可能です。
基本構文
|
|
デフォルトは秒です。sleep 5なら5秒待機します。
主なオプション
| 単位 | 説明 | 例 |
|---|---|---|
| (なし) | 秒 | sleep 5 |
s |
秒 | sleep 5s |
m |
分 | sleep 2m |
h |
時間 | sleep 1h |
d |
日 | sleep 1d |
複数単位の組み合わせも可能:sleep 1h30m
使用例
例1: 5秒待機
|
|
実行結果:
|
|
最もシンプルな使い方。
例2: 小数点での秒数指定
|
|
実行結果:
|
|
小数点で0.5秒単位での指定も可能。
例3: 分単位での指定
|
|
実行結果:
|
|
mで分を指定。
例4: リトライロジック
|
|
実行結果:
|
|
失敗時に待機してリトライ。
例5: ポーリング処理
|
|
実行結果:
|
|
定期的に処理を繰り返す。
例6: 複数単位の組み合わせ
|
|
実行結果:
|
|
複数単位を組み合わせ。
例7: バックグラウンド処理
|
|
実行結果:
|
|
バックグラウンドで遅延メッセージ。
例8: タイムアウト実装
|
|
実行結果:
|
|
timeoutコマンドと組み合わせ。
例9: ステップバイステップの処理
|
|
実行結果:
|
|
複数ステップの処理間に待機。
例10: ループで段階的な待機
|
|
実行結果:
|
|
変数で待機時間を制御。
Tips・注意点
sleepはシグナル受信で中断可能
|
|
sleep実行中にCtrl+Cで中断できます。
小数点での精度
|
|
小数点での精度は環境依存。通常は0.1秒単位が目安。
sleepの単位省略時の動作
|
|
単位を省略すると秒として扱われます。
実践的な使い方
APIリクエストのレート制限
|
|
APIアクセスのレート制限対策。
ファイル作成の監視
|
|
ファイルの作成を監視して待機。
デーモンプロセス
|
|
1分ごとに定期処理を実行。
ログローテーション時の遅延処理
|
|
ファイル操作の間に待機。
まとめ
sleepコマンドのポイント:
- 指定時間だけプロセスを停止するコマンド
- デフォルト: 秒単位(例:
sleep 5) - 単位指定:
s(秒)、m(分)、h(時間)、d(日) - 小数点対応:
sleep 0.5(0.5秒) - 複合単位:
sleep 1h30m(1時間30分) - よく使う組み合わせ:
sleep 5 && command,sleep 0.1
シェルスクリプトで遅延処理が必要な時には、ほぼ必ず出てくるコマンドですよ!