| wait | |
|---|---|
| Developer | AT&T Bell Laboratories |
| Initial release | November 1973; 52 years ago (1973-11) |
| Operating system | Unix andUnix-like |
| Type | Command |
InUnixshells,wait is acommand which pauses until execution of abackground process has ended.
wait[n...]
wheren... is a list ofpids orjob IDs of a currently executing background process (job). If no ids are provided, the command waits until all jobs known to the invoking shell have terminated.
wait normally returns theexit status of the last job which terminated. It may also return 127 in the event thatn specifies a non-existent job or zero if there were no jobs to wait for.
Becausewait needs to be aware of the job table of the current shell execution environment. Under thePOSIX specifications it is required to be ashell builtin.[1]
This command can be useful where part of a script can execute in parallel to implement a barrier where an upcoming section depends on the successful completion of the preceding sections.
The following example will fetch thesrc/ directory from a machine namediona usingrsync and simultaneously update the libraries on which this program depends, before building the combination.
#!/usr/bin/env bash# Parallel update script which makes use of the wait command# Update local copyrsynciona:src/.&# Upgrade required libraries, or exit indicating failure if make failed for some reasonmake-Clib||exit1# Wait for rsync to terminate (may have already happened) and finish the jobwaitmake
Wait for specified job control id number:
$ls-R/>/dev/null2>&1&# start any long running background process[2]1986$wait%2# waits for background job number 2 to terminate, then returns