GNU Core Utilities/sleep
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 版といくつか違いがあります。
主な違い
編集- 小数秒の対応
- GNU
sleep
は小数(例:sleep 2.5
)をサポートするが、FreeBSD のsleep
はサポートしない。 - FreeBSD で小数秒を扱うには
usleep
を使う(単位はマイクロ秒)。
usleep 2500000 # 2.5秒
- GNU
- 複数の時間単位の同時指定
- GNU
sleep
ではsleep 1h 30m
のように複数の時間単位を指定可能。 - FreeBSD 版では、時間を1つだけ指定する必要がある(
sleep 5400
のように秒換算する)。
- GNU
- GNU coreutils 版を FreeBSD で使う方法
coreutils
パッケージをインストールするとgsleep
という名前で GNU 版sleep
が使える。
pkg install coreutils gsleep 2.5
詳しくは、それぞれの環境で man sleep
を確認してください。