sleep コマンドは、指定した時間だけ処理を一時停止するコマンドです。GNU coreutils に含まれており、Linux では GNU 版が、FreeBSD では BSD 版が提供されています。基本的な動作は共通していますが、オプションの扱いに違いがあります。

基本的な使い方

編集
sleep [時間]

指定した時間だけ処理を一時停止します。

時間の指定方法(GNU coreutils 版)

編集

時間は整数または小数で指定でき、単位を付けることも可能です。

指定可能な単位

編集
時間の単位
単位 説明
s 秒(デフォルト)
m 分(1m = 60秒)
h 時間(1h = 3600秒)
d 日(1d = 86400秒)

5秒間スリープ

編集
sleep 5

2.5秒間スリープ(小数指定)

編集
sleep 2.5

3分スリープ

編集
sleep 3m

1時間スリープ

編集
sleep 1h

1時間30分スリープ(複数の時間単位を組み合わせ)

編集
sleep 1h 30m

スクリプトでの利用

編集

以下のスクリプトは、5秒ごとに「Hello」を表示します。

while true; do
  echo "Hello"
  sleep 5
done

FreeBSD 版との違い

編集

FreeBSD でも sleep コマンドは提供されていますが、GNU coreutils 版といくつか違いがあります。

主な違い

編集
  1. 小数秒の対応
    • GNU sleep は小数(例: sleep 2.5)をサポートするが、FreeBSD の sleep はサポートしない。
    • FreeBSD で小数秒を扱うには usleep を使う(単位はマイクロ秒)。
    usleep 2500000  # 2.5秒
    
  2. 複数の時間単位の同時指定
    • GNU sleep では sleep 1h 30m のように複数の時間単位を指定可能。
    • FreeBSD 版では、時間を1つだけ指定する必要がある(sleep 5400 のように秒換算する)。
  3. GNU coreutils 版を FreeBSD で使う方法
    • coreutils パッケージをインストールすると gsleep という名前で GNU 版 sleep が使える。
    pkg install coreutils
    gsleep 2.5
    

詳しくは、それぞれの環境で man sleep を確認してください。