Cron is a time-based job scheduler in Unix-like operating systems, including Ubuntu. It allows users to schedule tasks (commands or scripts) to run periodically at fixed times, dates, or intervals.
Tip: I highly recommend checking out the Crontab Guru app, as opposed to memorizing all the examples below.
Here’s how you can use Cron in Ubuntu:
Understanding Cron Terminology:
- Cron Jobs: Tasks scheduled to run at specified times.
- Crontab: The file where Cron jobs are stored. Each user can have their own crontab file.
- Cron Daemon: The background process that reads and executes Cron jobs.
Accessing the Cron Configuration:
- Cron jobs are managed through the
crontabcommand. - To edit the current user’s cron jobs, use:
crontab -e- To view the current user’s cron jobs, use:
crontab -l- To edit another user’s cron jobs (requires sudo), use:
sudo crontab -u username -eCron Syntax:
- Cron jobs are defined using a specific syntax:
* * * * * command_to_execute- The five asterisks represent (in order): minute, hour, day of month, month, day of week.
- You can use numbers,
*(wildcard),-(range),,(list), and/(interval) to specify time values.
Examples:
- Run a script every hour:javascript
0 * * * * /path/to/script.sh- Run a script every day at 2:30 AM:
30 2 * * * /path/to/script.sh- Run a script every Monday at 8 PM:
0 20 * * 1 /path/to/script.shSpecial Strings:
@reboot: Run the command once when the system boots up.@hourly,@daily,@weekly,@monthly,@yearly: Run the command at predefined intervals.
Important Notes:
- Ensure that the command/script you want to run has the appropriate permissions.
- Use absolute paths for files and commands to avoid issues with the environment.
- Always double-check your cron syntax to avoid unintended consequences.
- Logging the output of cron jobs can help with troubleshooting.
Saving Changes:
- After editing the crontab file (
crontab -e), save your changes and exit the editor. The changes will be automatically applied.
Monitoring Cron Jobs:
- Check system logs (
/var/log/syslogor/var/log/cron) for any messages related to Cron job execution.