Overview
True to its name, `wait` pauses the execution of a shell script until a background job finishes. It is typically used when multiple tasks are run in parallel in the background (using the `&` symbol), and subsequent operations in the script depend on these background tasks completing. Using `wait` also allows the script to check the exit code of the background process, which helps in determining the success or failure of the job.
Key Features
Key features of the wait command include:
- Waits for the termination of a specific background job.
- Can take a job number or Process ID (PID) as an argument.
- If executed without arguments, it waits for all background jobs to terminate.
- Useful for synchronizing multiple parallel tasks in shell scripts.
Main Options
The `wait` command is a simple command with few options, primarily taking job numbers or PIDs as arguments.
1) Execution Options
2) Help
Generated command:
Try combining the commands.
Description:
`wait` Executes the command.
Combine the above options to virtually execute commands with AI.
Usage Examples
Explore various usage examples of the `wait` command to understand its functionality.
Wait for All Background Jobs
sleep 5 &
sleep 10 &
jobs
wait
echo 'All jobs have completed.'
Run multiple `sleep` tasks in the background, then use the `wait` command to wait for all of them to complete.
Wait for a Specific Job
sleep 10 &
sleep 5 &
jobs
wait %1
echo 'Job 1 has completed.'
Wait for job number 1 to finish among two jobs. Use the `jobs` command to find the job number and then `wait %1`.
Wait by Process ID (PID)
sleep 10 &
PID=$!
echo "Job with PID $PID has started."
wait $PID
echo "Job with PID $PID has completed."
In a script, save the PID of a background process into a variable using `$!`, then wait for that specific PID to terminate.
Installation
wait is a built-in command of shells (like bash, zsh), and does not require separate installation.
Tips & Cautions
Here are some points to keep in mind when using the `wait` command.
Tips
waitpauses shell execution until the background process terminates. If the process does not terminate, the shell will continue to wait indefinitely.- The exit status code of the
waitcommand is the same as the exit status code of the process it waited for. This allows you to check the success or failure of the job within your script. - To use a job number (
%1), you must first check the current shell's background jobs using thejobscommand.$!is a special variable that holds the PID of the most recently executed background process.