Introducción
Los cron jobs son tareas que se agregan al demonio cron para que las ejecute periódicamente, en momentos específicos.
Por lo general se quiere ejecutar una tarea todos los lunes, o todos los días a las 5 pm, etc. Cron es muy potente y flexible. Veamos qué es:
Cron es un planificador de tareas basado en tiempo en sistemas operativos tipo Unix. Permite a los usuarios programar trabajos (comandos o scripts) para que se ejecuten periódicamente en ciertos momentos o fechas. Se usa habitualmente para automatizar tareas de mantenimiento o administración del sistema.
En Linux, los cron jobs se pueden agregar de dos formas:
- Agregándolos al script cron del usuario
- Agregándolos a las carpetas
@hourly,@daily,@monthlyo@weeklyde root
Agregar un cron job en GNU/Linux
Para editar el crontab del usuario actual:
crontab -e
Para editar el crontab de otro usuario (requiere ser root):
crontab -u [usuario] -e
Para listar los trabajos programados:
crontab -l
Sintaxis
La sintaxis del archivo crontab es:
Min Hora Día Mes DiaSem /ruta/al/comando arg1 arg2
Donde:
- Min — Minuto, valor numérico de 0 a 59
- Hora — Hora de ejecución, valor numérico de 0 a 23
- Día — Día del mes, valor numérico de 1 a 31
- Mes — Mes de ejecución, valor numérico de 1 a 12
- DiaSem — Día de la semana, valor numérico de 0 a 7 (0 y 7 son domingo)
Se puede poner un asterisco * en cualquier campo para indicar "siempre".
Ejemplo: ejecutar un script de backup a las 00:30 todos los días:
30 0 * * * /home/usuario/backup.sh
Ejemplos
Ejecutar en un momento específico, una sola vez:
12 02 2 11 * /home/usuario/tarea.pl
A las 2:12 am del 2 de noviembre.
Ejecutar dos veces, en noviembre y diciembre:
12 02 02 11,12 * /home/usuario/tarea.pl
Ejecutar en días laborables a las 14:00:
00 14 * * 1-5 /home/usuario/tarea.pl
Ejecutar cada 15 minutos:
*/15 * * * * comando
Palabras especiales:
@yearly # Cada año, el 1 de enero a las 00:00
@daily # Todos los días a las 00:00
@hourly # Cada hora, al minuto 0
@reboot # Al reiniciar el sistema
Carpetas de cron del sistema
Si quieres ejecutar una tarea cada hora, día, semana o mes, coloca tu script en una de estas carpetas:
/etc/cron.daily//etc/cron.hourly//etc/cron.monthly//etc/cron.weekly/
El script debe ser ejecutable y necesitarás permisos de escritura en esas carpetas.
Conclusión
Los cron jobs son la herramienta indicada cada vez que necesitas ejecutar una tarea periódicamente. No olvides leer las páginas del manual de crontab y crond.