待機と睡眠の違い


回答:


361

waitプロセスが終了するのを待ちます。sleep一定の時間スリープします。


34
@DomainsFeatured:いいえ、wait 60ジョブ60が完了するのを待ちます
Colin Pitrat

115

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.

90

sleep シェルを指定された秒数だけ遅延させます。

waitシェルに指定されたジョブを待機させます。例えば:

workhard &
[1] 27408
workharder &
[2] 27409
wait %1 %2

両方のサブプロセスが終了するまでシェルを遅らせます


24
私見それはwait %1 %2または他のバックグラウンドプロセスがない場合、wait 27408 27409または単にwaitです。この場合、PID 1(init)とPID 2(私のLinuxでは[migration / 0])を待機しようとしていますが、次のようなエラーメッセージが表示され、-bash: wait: pid 1 is not a child of this shell終了コードが返されます127
TrueY 2014年

11
したがって、2年の時点では誰もそれを認識していません。あなたは絶対的に正しいです、答えを編集します...
pbhd '19 / 11/14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.