crontab syntax in Linux CLI - Time & Space Complexity
We want to understand how the time it takes to run crontab commands grows as we add more scheduled tasks.
How does the system handle many scheduled jobs over time?
Analyze the time complexity of the following crontab entries.
# Run backup script every day at 2am
0 2 * * * /usr/local/bin/backup.sh
# Run cleanup script every hour
0 * * * * /usr/local/bin/cleanup.sh
# Run report script every 15 minutes
*/15 * * * * /usr/local/bin/report.sh
This crontab schedules three different scripts to run at different times.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The cron daemon checks each scheduled job every minute to see if it should run.
- How many times: It repeats this check once per minute for all jobs listed.
As you add more jobs, the cron daemon checks more entries each minute.
| Input Size (n) | Approx. Operations per Minute |
|---|---|
| 10 jobs | 10 checks |
| 100 jobs | 100 checks |
| 1000 jobs | 1000 checks |
Pattern observation: The number of checks grows directly with the number of jobs.
Time Complexity: O(n)
This means the time to check scheduled jobs grows linearly as you add more jobs.
[X] Wrong: "Adding more jobs won't affect performance because cron runs in the background."
[OK] Correct: Even though cron runs quietly, it still checks every job each minute, so more jobs mean more work.
Understanding how scheduled tasks scale helps you design efficient automation and avoid slowdowns in real systems.
"What if cron used a more efficient data structure to check jobs? How would that change the time complexity?"
Practice
* * * * *?Solution
Step 1: Understand the asterisk in crontab
The asterisk (*) in crontab means to match every possible value for that time field, like every minute or every hour.Step 2: Apply to the example
In* * * * *, each asterisk means every minute, every hour, every day, every month, and every weekday.Final Answer:
It means 'every' possible value for that field -> Option DQuick Check:
Asterisk = every value [OK]
- Thinking * means 'no value' or skip
- Confusing * with specific times
- Assuming * means only weekends
Solution
Step 1: Understand crontab field order
The fields are: minute, hour, day of month, month, day of week.Step 2: Match time 3:30 AM
3:30 AM means minute=30, hour=3, so the first two fields must be 30 and 3 respectively.Final Answer:
30 3 * * * /path/to/script.sh -> Option AQuick Check:
Minute=30, Hour=3 correct [OK]
- Swapping hour and minute fields
- Using day or month fields incorrectly
- Misplacing asterisks
15 14 1 * * running /usr/bin/backup.sh, when will the script run?Solution
Step 1: Decode the crontab fields
Fields: minute=15, hour=14 (2 PM), day=1, month=*, weekday=* (any day).Step 2: Interpret the schedule
The script runs at 14:15 (2:15 PM) on the 1st day of every month, regardless of weekday.Final Answer:
At 2:15 PM on the first day of every month -> Option AQuick Check:
Hour=14 means 2 PM, day=1 means first day [OK]
- Confusing 14 as 2 AM instead of 2 PM
- Ignoring day of month field
- Assuming runs every day
60 12 * * 1 /usr/bin/script.shSolution
Step 1: Check minute field range
Minute field must be between 0 and 59. 60 is invalid.Step 2: Verify other fields
Hour=12 is valid (12 PM), day of week=1 is valid (Monday), command path looks absolute.Final Answer:
Minute field cannot be 60; valid range is 0-59 -> Option CQuick Check:
Minute max is 59, 60 is invalid [OK]
- Using 60 in minute field
- Confusing hour ranges
- Misunderstanding day of week numbers
Solution
Step 1: Understand time and day fields
11:45 PM means hour=23, minute=45. Monday=1, Friday=5 in day of week field.Step 2: Match fields to crontab syntax
Minute=45, hour=23, day of month=*, month=*, day of week=1,5 means Monday and Friday.Final Answer:
45 23 * * 1,5 /usr/local/bin/cleanup.sh -> Option BQuick Check:
Minute=45, Hour=23, Days=1,5 correct [OK]
- Swapping hour and minute
- Using day of month instead of day of week
- Wrong day numbers for weekdays
Ready to prove it?
Pass the test and this pattern moves unknown
