Running commands in the background lets you keep using the terminal while a task runs. It helps you do many things at once without waiting.
Running commands in background (&) in Bash Scripting
command &
The ampersand (&) placed after a command runs it in the background.
You can keep typing new commands immediately after starting a background job.
sleep 10 &ping google.com &
./long_script.sh &
This script starts a sleep command in the background for 5 seconds. Then it immediately prints a message. The wait command pauses the script until the background job finishes, then prints the final message.
#!/bin/bash echo "Start background job" sleep 5 & echo "This prints immediately" wait echo "Background job finished"
You can see background jobs with the jobs command.
Use fg to bring a background job to the foreground.
Background jobs still print output to the terminal unless redirected.
Use & after a command to run it in the background.
This frees your terminal to run other commands immediately.
Use wait to pause until background jobs finish if needed.
Practice
& at the end of a command in bash do?Solution
Step 1: Understand the role of
The&in bash&symbol placed after a command tells bash to run that command in the background.Step 2: Effect on terminal usability
Running a command in the background frees the terminal immediately so you can type new commands without waiting.Final Answer:
Runs the command in the background, freeing the terminal immediately -> Option AQuick Check:
Background run = frees terminal [OK]
- Thinking & stops the command
- Confusing & with command priority
- Assuming & waits for command to finish
sleep 10 in the background?Solution
Step 1: Identify correct placement of
The&&must come immediately after the full command to run it in the background.Step 2: Check each option
sleep 10 & places&correctly aftersleep 10. The other options misuse&or use wrong symbols.Final Answer:
sleep 10 & -> Option BQuick Check:
Command & = correct syntax [OK]
- Placing & before the command
- Inserting & between command and arguments
- Using && instead of &
echo "Start" sleep 3 & echo "End"
Solution
Step 1: Analyze command order and background execution
Thesleep 3 &runs in the background, so it does not block the terminal.Step 2: Understand output timing
"Start" prints first, thensleep 3 &starts silently in background, then "End" prints immediately.Final Answer:
Start\nEnd (immediately), then sleep runs silently -> Option CQuick Check:
Background sleep = immediate End print [OK]
- Expecting sleep to delay 'End' output
- Thinking background commands print output
- Confusing & with && causing wait
echo "Start" sleep 5 & wait wait echo "Done"
Solution
Step 1: Understand
Thewaitbehaviorwaitcommand waits for all background jobs to finish. Multiplewaitcommands do not cause errors but the second is unnecessary.Step 2: Check script correctness
The script runssleep 5in background, waits twice, then prints "Done". This works but the secondwaitis redundant.Final Answer:
The second wait is redundant but not an error -> Option DQuick Check:
Multiple waits allowed, redundant but no error [OK]
- Thinking multiple waits cause errors
- Forgetting & after sleep
- Misplacing echo before wait
cmd1, cmd2, and cmd3 in the background simultaneously, then wait for all to finish before printing "All done". Which script correctly does this?Solution
Step 1: Run each command in background separately
Each command must end with&to run in background independently.Step 2: Use
After starting all commands,waitto pause until all background jobs finishwaitpauses script until all finish, then prints "All done".Final Answer:
cmd1 & cmd2 & cmd3 & wait echo "All done" -> Option AQuick Check:
Separate & + wait before echo = correct [OK]
- Running all commands on one line without separate &
- Omitting wait causing early echo
- Placing echo on same line as background commands
Ready to prove it?
Pass the test and this pattern moves unknown
