Difference between wait and sleep
Solution 1
wait
waits for a process to finish; sleep
sleeps for a certain amount of seconds.
Solution 2
wait is a BASH built-in command. From 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 is not a shell built-in command. It is a utility that delays for a specified amount of time.
The sleep
command may support waiting in various units of time. GNU coreutils 8.4 man sleep
says:
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.
Solution 3
sleep
just delays the shell for the given amount of seconds.
wait
makes the shell wait for the given job. e.g.:
workhard &
[1] 27408
workharder &
[2] 27409
wait %1 %2
delays the shell until both of the subprocesses have finished
ziiweb
Ziiweb is a web agency on creating websites and web applications. We also offer marketing online services (SEO/PPC) to promote your business through search engines and social networks. We always bet for the last and best web technologies: HTML5, CSS3, jQuery, PHP5 and symfony (all releases).
Updated on July 08, 2022Comments
-
ziiweb almost 2 years
What is difference between
wait
andsleep
? -
TrueY over 9 yearsIMHO it is
wait %1 %2
orwait 27408 27409
or simplywait
if there is no other background process. In this case you are trying to wait for PID 1 (init) and PID 2 ([migration/0] on my Linux), but you will get error message, like:-bash: wait: pid 1 is not a child of this shell
and returns the exit code127
. -
pbhd over 9 yearsSo as of 2 Years nobody realized it. You are absolutely right, will edit the answer...
-
Colin Pitrat over 7 years
wait 60
waits for job 60 to finish;sleep 60
sleeps for 60 seconds.