Chapter 11: Automation and Scheduling
Learn to automate tasks by scheduling scripts with cron
and at
, making your scripts run automatically at specified intervals.
In this chapter, we’ll explore methods for automating tasks in Bash using scheduling tools like cron
and at
. These tools allow you to set scripts to run at specific times or intervals, reducing the need for manual execution and ensuring tasks are performed on schedule.
Introduction to Cron Jobs
The cron
daemon is a built-in service that schedules and executes scripts or commands at specified intervals. cron
jobs are defined in a crontab
file and can run hourly, daily, weekly, or even by the minute.
To edit your personal crontab
, use the following command:
crontab -e
Cron Syntax and Format
Each line in a crontab
file represents a cron job, with the following format:
minute hour day month day_of_week command
Each field specifies when the command should run:
minute
: 0–59hour
: 0–23day
: 1–31month
: 1–12day_of_week
: 0–7 (0 and 7 represent Sunday)
Use *
in any field to represent "every" (e.g., *
for every minute, hour, etc.).
Example Cron Jobs
# Run a script every day at 2:30 AM
30 2 * * * /path/to/script.sh
# Run a script every Monday at 5:00 PM
0 17 * * 1 /path/to/script.sh
# Run a script every 15 minutes
*/15 * * * * /path/to/script.sh
These examples show how to configure cron
jobs to run at specific times or intervals, such as daily, weekly, or every 15 minutes.
Using at
for One-Time Scheduling
The at
command schedules a one-time task for a specified time in the future. To use at
, enter:
echo "/path/to/script.sh" | at 3:00 PM
This command schedules script.sh
to run at 3:00 PM. at
provides flexibility for scheduling individual tasks without recurring them.
Viewing and Managing Scheduled Jobs
To view and manage scheduled jobs, use the following commands:
crontab -l
: Lists all scheduled cron jobs for the current user.atq
: Lists all scheduledat
jobs.atrm job_id
: Removes a specificat
job by its ID.
Example: Automating a Backup Script
Suppose you have a backup script, backup.sh
, that you want to run daily at midnight. You could schedule it with cron
as follows:
# Open your crontab for editing
crontab -e
# Add the following line to schedule the backup script
0 0 * * * /path/to/backup.sh
This crontab
entry runs backup.sh
every day at midnight, automating the backup process without manual intervention.
Summary and Next Steps
In this chapter, we explored task automation with cron
and at
for scheduling scripts. These tools enable you to automate routine tasks efficiently. In the next chapter, we’ll look at advanced scripting techniques, including optimizing and refining your scripts for even greater functionality.