Diferença entre esperar e dormir


Respostas:


361

waitaguarda a conclusão de um processo; sleepdorme por uma certa quantidade de segundos.


34
@DomainsFeatured: Não, wait 60espera por trabalho de 60 para terminar
Colin Pitrat

115

wait é um comando interno do BASH. De 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 não é um comando interno do shell. É um utilitário que atrasa por um período especificado.

O sleepcomando pode suportar a espera em várias unidades de tempo. O GNU coreutils 8.4 man sleepdiz:

    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 apenas atrasa o shell durante um determinado período de segundos.

waitfaz com que o shell aguarde o trabalho especificado. por exemplo:

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

atrasa o shell até que ambos os subprocessos terminem


24
IMHO é wait %1 %2ou wait 27408 27409simplesmente waitse não houver outro processo em segundo plano. Nesse caso, você está tentando aguardar o PID 1 (init) e o PID 2 ([migração / 0] no meu Linux), mas você receberá uma mensagem de erro como: -bash: wait: pid 1 is not a child of this shelle retorna o código de saída 127.
TrueY

11
Então, a partir de 2 anos ninguém percebeu. Você está absolutamente certo, irá editar a resposta ...
pbhd
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.