sleep – 一定時間だけ待機する

ジョブ制御

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 は不要です。
  • 精度:実際の待機時間はスケジューラ等の影響を受け、指定よりわずかに長くなることがあります。
  • 設定ファイル:関連する設定ファイルはありません(純粋なユーティリティ)。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント