time-based automation: cron and crontabs (and other apps such as anacron) are needed for so many things on a server. Here is how to use cron and crontabs on Amazon Linux AMI.
This will in addition install several dependencies, including cron.
yum -y install crontabs chkconfig crond on service crond start service crond status
Edit the crontabs
Remember to do this with
root, otherwise there might be access issues with the actual items to run.
vi is the default editor, but I like
nano better, so:
export VISUAL=nano; crontab -e
Essentially there are numbers or asterisks for when things are run. From left to right:
- Minute (0-59)
- Hour of day (0-23)
- Day of month (1-31)
- Month (1-12)
- Day of week (0-6, 0 = Sunday)
An asterisk counts for every possible value, which means:
- = every minute 0 1 * * * = 01:00 every day 0 18 * * 0 = Every Sunday at 18:00 (6pm)
Crontab executes from home directory of the user. It is best to use full paths for the location of scripts and the like
Example MySQL watchdog script
* * * * * /usr/local/bin/rsmy >> /var/log/mysqld.log
#!/bin/bash UP=$(/etc/init.d/mysqld status | grep running | grep -v not | wc -l); if [ "$UP" -ne 1 ]; then echo "$(date) - MySQL is down - restarting now"; /sbin/service mysqld start else echo "$(date) - MySQL is running"; /usr/bin/free -m fi