Ravindra BagaleCourses & study guides मराठी Track your progress

Chapter 4: Linux Advanced Commands

4.9 Scheduling tasks: cron

In short: cron runs commands automatically on a schedule.

cron runs commands automatically on a schedule. Edit your table with crontab -e, list with crontab -l.

 ┌──────── minute (0-59)
 │ ┌────── hour (0-23)
 │ │ ┌──── day of month (1-31)
 │ │ │ ┌── month (1-12)
 │ │ │ │ ┌ day of week (0-7, 0 and 7 = Sunday)
 │ │ │ │ │
 * * * * *  command
Schedule Meaning
*/5 * * * * Every 5 minutes
0 2 * * * Every day at 02:00
30 9 * * 1-5 09:30 Monday to Friday
0 0 1 * * Midnight on the 1st of every month
@reboot Once at every boot

Now open your terminal and do this with me. Example – the Mauli Dairy website should be backed up every night at 1:30 AM. Run crontab -e and add this line:

30 1 * * * tar -czf $HOME/backups/site-$(date +\%F).tar.gz /var/www/html

(% has a special meaning in crontab, so it is written as \%. Create the folder first with mkdir -p ~/backups.)

cron on Amazon Linux 2023

AL2023 does not ship cron by default. Install it: sudo yum install -y cronie, then sudo service crond start and sudo systemctl enable crond. (systemd timers are the modern alternative.) The server clock is UTC by default — set India time with sudo timedatectl set-timezone Asia/Kolkata.

Ravindra Bagale's Tip

Before scheduling any cron job, run the same command by hand first and check it. Cron runs with a very small PATH and without an interactive shell, so always use full paths (/usr/bin/tar, /home/ubuntu/backup.sh) and send the output to a log file: >> /home/ubuntu/backup.log 2>&1. Remember this!

Ravindra Bagale's Tip

Many students type crontab -e on AL2023 and get command not found – because cronie is not even installed. First run sudo yum install -y cronie, sudo service crond start and sudo systemctl enable crond. And the server runs on UTC – if you want 1:30 AM IST, set the timezone to Asia/Kolkata.

Lab

Chala, crontab -e ne */5 * * * * date >> $HOME/cron-test.log hi line add kara, aani 10 minitani cat ~/cron-test.log madhe don lines aalya ka te bagha. Kaam zalyavar crontab -e madhun ti line kadhun taka aani crontab -l ne check kara.

Got it? Five fields – minute, hour, day, month, weekday – and full paths. Now let's move on to environment variables.