📖 Scenario: Imagine you are running a kitchen where multiple dishes need to be cooked. You want to control when each dish starts and finishes so that everything is ready on time. In computer scripting, process control helps manage when and how tasks run, just like a kitchen manager controls cooking steps.
🎯 Goal: You will write a simple Bash script that starts a background process, waits for it to finish, and then prints a message. This shows how process control manages execution order.
📋 What You'll Learn
Create a background process using &
Use wait to pause script until the background process finishes
Print a message after the background process completes
💡 Why This Matters
🌍 Real World
Process control is used in automation scripts to run tasks in parallel or sequence, improving efficiency and resource use.
💼 Career
Understanding process control is essential for system administrators, DevOps engineers, and anyone automating tasks with shell scripts.
Progress0 / 4 steps
1
Create a background process
Write a command that runs sleep 3 in the background using &.
Bash Scripting
Hint
Use sleep 3 & to run the sleep command in the background.
2
Add a wait command
Add the wait command on a new line to pause the script until the background sleep 3 finishes.
Bash Scripting
Hint
The wait command pauses the script until all background jobs finish.
3
Print a message after waiting
Add a echo command on a new line that prints exactly "Background process finished" after the wait command.
Bash Scripting
Hint
Use echo "Background process finished" to show the message.
4
Run the script and see the output
Run the script and observe that it waits 3 seconds before printing Background process finished. Use echo output to confirm.
Bash Scripting
Hint
The script should pause for 3 seconds, then print the message.
Practice
(1/5)
1. What does the & symbol do when added at the end of a command in a bash script?
easy
A. Runs the command in the background, allowing the script to continue immediately
B. Stops the script execution until the command finishes
C. Runs the command only if the previous command failed
D. Combines two commands to run one after the other
Solution
Step 1: Understand the role of & in bash
The & symbol placed after a command tells bash to run that command in the background.
Step 2: Effect on script execution
Running a command in the background means the script does not wait for it to finish and continues running the next commands immediately.
Final Answer:
Runs the command in the background, allowing the script to continue immediately -> Option A
Quick Check:
& runs command in background [OK]
Hint: Background tasks use & to run without waiting [OK]
Common Mistakes:
Thinking & waits for command to finish
Confusing & with && or ||
Assuming & runs command only on failure
2. Which of the following is the correct syntax to run command2 only if command1 succeeds?
echo "Start" runs and succeeds, so next command after && runs.
Step 2: Evaluate the second command
false always fails (exit status non-zero), so the next && echo "Middle" does not run.
Step 3: Evaluate the || echo "End"
Because the chain before || failed, echo "End" runs.
Final Answer:
Start
End -> Option A
Quick Check:
Success && fail skips next && runs || next [OK]
Hint: && stops on failure, || runs if previous failed [OK]
Common Mistakes:
Assuming all commands run sequentially
Ignoring that false always fails
Confusing && and || behavior
4. Identify the error in this script snippet:
sleep 5 &
wait
echo "Done"
medium
A. There is an extra space before echo causing syntax error
B. The ampersand & should be at the end of the wait command
C. The ampersand & is incorrectly placed after sleep 5
D. The wait command is missing a process ID
Solution
Step 1: Examine the wait command
The wait command lacks a process ID argument.
Step 2: Behavior of wait without PID
Without a PID (e.g., $!), wait pauses until all background jobs complete, which may include unintended jobs and cause longer waits.
Step 3: Proper fix
Use sleep 5 & pid=$!; wait $pid or wait $! to target only the sleep job.
Final Answer:
The wait command is missing a process ID -> Option D
Quick Check:
wait w/o PID waits all BG jobs [OK]
Hint: Use wait $! for specific BG job [OK]
Common Mistakes:
Using wait w/o PID when targeting specific job
Misplacing & after wait
Wrongly thinking & after sleep is bad
Believing leading spaces cause syntax errors
5. You want to run three commands: cmd1, cmd2, and cmd3. Run cmd1 and cmd2 in parallel, then run cmd3 only after both finish successfully. Which script snippet achieves this?
hard
A. cmd1 && cmd2 && cmd3 &
B. cmd1 & cmd2 & wait && cmd3
C. cmd1 & cmd2 && wait && cmd3
D. cmd1 & cmd2 & cmd3 && wait
Solution
Step 1: Start cmd1 and cmd2 in background
cmd1 & cmd2 & launches both commands asynchronously in parallel.
Step 2: Wait for both background jobs
wait pauses script execution until both background jobs finish.
Step 3: Run cmd3 after successful completion
wait && cmd3 ensures cmd3 runs only if both background jobs succeed.
Final Answer:
cmd1 & cmd2 & wait && cmd3 -> Option B
Quick Check:
Both BG jobs & wait then conditional cmd3 [OK]
Hint: Run both commands in background, wait, then run next [OK]
Common Mistakes:
Running cmd3 before wait finishes
Not using wait to synchronize background jobs
Placing & incorrectly causing sequential runs
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.