wait
とsleep
はどう違いますか?
wait
はプロセスが終了するのを待ちます。 sleep
は一定時間スリープします。
waitはBASHの組み込みコマンドです。 man bash
から:
wait [n ...]
Wait for each specified process and return its termination sta-
tus. Each n may be a process ID or a job specification; if a
job spec is given, all processes in that job's pipeline are
waited for. If n is not given, all currently active child pro-
cesses are waited for, and the return status is zero. If n
specifies a non-existent process or job, the return status is
127. Otherwise, the return status is the exit status of the
last process or job waited for.
sleepはシェルの組み込みコマンドではありません。指定した時間だけ遅延するユーティリティです。
sleep
コマンドはさまざまな時間単位で待機することをサポートします。 GNU coreutils 8.4 man sleep
のコメント:
SYNOPSIS
sleep NUMBER[SUFFIX]...
DESCRIPTION
Pause for NUMBER seconds. SUFFIX may be ‘s’ for seconds (the default),
‘m’ for minutes, ‘h’ for hours or ‘d’ for days. Unlike most implemen-
tations that require NUMBER be an integer, here NUMBER may be an arbi-
trary floating point number. Given two or more arguments, pause for
the amount of time specified by the sum of their values.
sleep
はシェルを与えられた秒数だけ遅らせるだけです。
wait
はシェルに与えられたサブプロセスを待たせる。例えば。:
workhard &
[1] 27408
workharder &
[2] 27409
wait %1 %2
両方のサブプロセスが終了するまでシェルを遅らせます
Bash
waitコマンドは、バックグラウンドで実行中のすべてのジョブが終了するまで、またはオプションとして指定されたジョブ番号またはプロセスIDが終了するまで、スクリプトの実行を停止します。
wait%1 or wait $PID
wait ${!}
wait $ {!}は「最後のバックグラウンドプロセスが完了するまで待つ」という意味です($!は最後のバックグラウンドプロセスのPIDです)
Sleep
指定した時間だけ遅延を追加します。
sleep NUMBER[SUFFIX]
sleep 5 (sleep five seconds)
これを試して:
sleep 10 &
wait %1