cron es el servicio que permite programar la ejecución de comandos y tareas en GNU/LINUX, BSD y otras variantes UNIX. cron se ejecuta cada minuto y detecta si hay un nuevo comando o tarea que deba ejecutarse, para ello lee los ficheros /etc/crontab, /etc/cron.d/* y /var/spool/cron/crontabs/*
crontab es el programa que mantiene (instala, desinstala o lista las tareas programadas) los ficheros de las tareas programadas, cada usuario tiene su propio fichero crontab en /var/spool/cron/crontabs/usuario el cual no debe editarse directamente. Si el fichero /etc/cron.allow existe su usuario debe aparecer en el mismo para poder programar tareas, si no existe y existe /etc/cron.deny su usuario no debe aparecer en este último; si ninguno de los 2 existen entonces depende de la configuración por defecto del SO.
crontab tambien es el fichero que contiene instrucciones para ejecutar las tareas programadas. Una línea en el fichero crontab puede establecer una variable de entorno (nombre-var = valor) o programar la ejecución de un comando; las líneas en blanco y las que comienzan con # (comentarios) son ignoradas. El formato para programar una tarea es el siguiente:
#(0-59) (0-23) (1-31) (1-12) (0 - 7) min hr día-del-mes mes día-de-la-semana comando
Notas:
- – Un * = todo los valores posibles
- – Se puede especificar un rango de valores separados por un guión
- – Se puede especificar una lista de valores separados por coma
- – Se puede especificar un paso dentro de un rango de valores
- – El 0 o 7 = Domingo para día-de-la-semana
Ejemplos
Realizar copias de seguridad a mi home cada 5 min
*/5 0 * * * rsync -avz $HOME servidor:/mnt/respaldo
Leer rsync – 16 ejemplos prácticos para más opciones de sincronización.
Realizar copias de seguridad a mis BD de lunes – viernes a las 10:00 p.m
0 22 * * 1-5 mysqldump -u root -pclave --all-databases > $HOME/bds.sql
Enviar correo de recordación los días 1ero y 15 de cada mes a las 2:15 p.m
15 14 1,15 * * mail -s 'Recordatorio' flosblog@wordpress.com < /dev/null
Realizar copias de seguridad a mis projectos cada 2 horas en el horario de 8:30 a.m – 5:30 p.m de lunes a viernes
30 8-17/2 * * 1-5 rsync -avz $HOME/prt servidor:/mnt/respaldo/prt
Leer rsync – 16 ejemplos prácticos para más opciones de sincronización.
Todo junto
# Usar BASH para ejecutar los comandos SHELL=/bin/bash */5 0 * * * rsync -avz $HOME servidor:/mnt/respaldo 0 22 * * 1-5 mysqldump -u root -pclave --all-databases > $HOME/bds.sql 15 14 1 * * mail -s 'Recordatorio' flosblog@wordpress.com < /dev/null 30 8-17/2 * * 1-5 rsync -avz $HOME/prt servidor:/mnt/respaldo/prt
Para editar el fichero crontab ejecute
crontab -e
Lecturas recomendadas
– man cron
– man 1 crontab