Scheduling in Unix
Unix provides two main tools for scheduling jobs:
-
cron → for repeated/periodic tasks (like every day, every hour, every Monday at 2 AM, etc.)
-
at → for one-time tasks (run once at a specific date/time)
1. cron – Periodic Jobs
How cron works
Crontab Format
A cron job entry has 6 fields:
MIN HOUR DAY MONTH WEEKDAY COMMAND
Examples
crontab -e # Edit your crontab file
crontab -l # List your cron jobs
Jobs:
0 2 * * * /home/user/backup.sh # Run backup script every day at 2:00 AM
30 9 * * 1 /home/user/report.sh # Run every Monday at 9:30 AM
*/5 * * * * echo "Hello" >> /tmp/hi # Run every 5 minutes
2. at – One-Time Jobs
How at works
Syntax
at TIME
Then type the commands, and press Ctrl+D to finish.
Examples
echo "echo Hello > /tmp/test.txt" | at 5pm # Run at 5 PM today
at 11:00pm # Start interactive mode
> echo "Backup started" >> /tmp/log
> Ctrl+D # End input
View scheduled jobs:
atq # List pending at jobs
atrm <jobid> # Remove a scheduled job
3. Comparison
| Feature |
cron |
at |
| Repeats |
Yes (periodic) |
No (one-time only) |
| Syntax |
Defined in crontab |
Run with at <time> |
| Use Case |
Backups, reports, cleanup scripts |
Running something at a specific time (like tomorrow 3 PM) |
Summary:
-
Use cron when you need repeated scheduling (daily, weekly, monthly).
-
Use at when you need a one-time scheduled task.