SLEEP(1)

名称
sleep - 一定の時間、実行を停止する

書式
sleep seconds

解説
sleep ユーティリティは、最低 seconds で指定した秒数だけ実行を停止します。 sleep は、他のコマンドの実行のスケジューリングに用いられます (使用例 を参照してください)。

sleep ユーティリティは、終了時に以下の値のいずれかを返します:

0   正常終了した場合、もしくは SIGALRM シグナルを受信した場合。

>0  エラーが起きた場合。

注意: NetBSD の sleep コマンドは、整数でない秒数を受け取って、その値を設定することができます。 これは移植性のない拡張であり、これを用いたシェルスクリプトが他のシステムで 正しく動作しないということがほぼ保証できます。

使用例
あるコマンドの実行を x 秒後に設定したい場合:

    (sleep 1800; sh command_file >& errors)&

上記の例では、command_file で指定したスクリプトを実行する前に 30 分間待ちます。 (at(1) ユーティリティの項を参照。)

あるコマンドを (csh(1) を使って) 繰り返し実行したい場合:

    while (1)
    	if (! -r zzz.rawdata) then
    		sleep 300
    	else
    		foreach i (`ls *.rawdata`)
    			sleep 70
    			awk -f collapse_data $i >> results
    		end
    		break
    	endif
    end

このようなスクリプトが必要とされるのは、 現在実行中のプログラムが一連のファイル群を処理するのに予想以上の 時間を必要としていて、このプログラムが処理結果をファイル (zzz.rawdata) に出力したらすぐに別のプログラムを起動して そのファイルを処理したいといった場合でしょう。 上記のスクリプトでは、zzz.rawdata が生成されたかどうかを 5 分おきに確認し、生成が確認されたら 70 秒待って awk ジョブを 実行する、という操作を繰り返します。

関連項目
nanosleep(2), sleep(3), at(1)

規格
sleep ユーティリティは p1003.2 互換になるように作ってあるつもりです。