Running commands in background (&) in Bash Scripting - Time & Space Complexity
When we run commands in the background using &, we want to know how this affects the total time our script takes.
We ask: How does running tasks in the background change the time needed as we add more commands?
Analyze the time complexity of the following code snippet.
for i in {1..n}; do
sleep 1 &
done
wait
This script starts n sleep commands in the background, each pausing for 1 second, then waits for all to finish.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Starting
nbackground sleep commands. - How many times: The loop runs
ntimes, launching all commands almost instantly.
Even though we start n commands, they run at the same time.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 1 second total |
| 100 | About 1 second total |
| 1000 | About 1 second total |
Pattern observation: Total time stays roughly the same no matter how many commands run in background.
Time Complexity: O(1)
This means the total time does not grow with more commands because they run at the same time.
[X] Wrong: "Running more background commands always takes more total time."
[OK] Correct: Since commands run simultaneously, total time depends on the longest single command, not the number of commands.
Understanding how background tasks affect time helps you write scripts that save time and run efficiently, a useful skill in many real-world tasks.
What if the commands run in background have different durations? How would the total time change?