Crontab
¿Qué es crontab?
crontab es una herramienta en sistemas Unix/Linux que permite programar tareas para que se ejecuten automáticamente en momentos específicos. Estas tareas, conocidas como cron jobs, son útiles para automatizar procesos como respaldos, actualizaciones, limpieza de archivos temporales, envío de correos, entre otros.
¿Cómo funciona crontab?
El sistema cron utiliza un archivo llamado crontab (abreviatura de cron table) para almacenar las tareas programadas. Cada usuario en el sistema puede tener su propio archivo crontab, y el demonio cron se encarga de leer estos archivos y ejecutar las tareas en los momentos indicados.
Sintaxis de crontab
Cada línea en un archivo crontab representa una tarea programada y sigue esta estructura:
1
2
3
4
5
6
7
8
* * * * * comando
- - - - -
| | | | |
| | | | +---- Día de la semana (0 - 7) (0 y 7 son domingo)
| | | +------ Mes (1 - 12)
| | +-------- Día del mes (1 - 31)
| +---------- Hora (0 - 23)
+------------ Minuto (0 - 59)
- Minuto: En qué minuto de la hora debe ejecutarse (0-59).
- Hora: En qué hora del día debe ejecutarse (0-23).
- Día del mes: En qué día del mes debe ejecutarse (1-31).
- Mes: En qué mes debe ejecutarse (1-12).
- Día de la semana: En qué día de la semana debe ejecutarse (0-7, donde 0 y 7 representan el domingo).
Ejemplos de tareas programadas
- Ejecutar un script cada día a las 3:00 AM:
1
0 3 * * * /ruta/al/script.sh
- Ejecutar un comando cada 5 minutos:
1
*/5 * * * * /ruta/al/comando
- Ejecutar un script todos los lunes a las 8:00 AM:
1
0 8 * * 1 /ruta/al/script.sh
- Ejecutar un script el primer día de cada mes a las 12:00 PM:
1
0 12 1 * * /ruta/al/script.sh
- Ejecutar un script solo en diciembre a las 6:00 PM:
1
0 18 * 12 * /ruta/al/script.sh
Comandos básicos de crontab
- Editar el archivo
crontabdel usuario actual:1
crontab -eEsto abre el archivo
crontaben el editor predeterminado para que puedas agregar o modificar tareas. - Listar las tareas programadas del usuario actual:
1
crontab -l - Eliminar todas las tareas programadas del usuario actual:
1
crontab -r - Editar el archivo
crontabde otro usuario (requiere permisos de administrador):1
sudo crontab -u usuario -e
Caracteres especiales en crontab
*: Representa “cualquier valor”. Por ejemplo, un*en la columna de minutos significa “cada minuto”.,: Permite especificar múltiples valores. Ejemplo:1,15,30significa “en los minutos 1, 15 y 30”.-: Define un rango de valores. Ejemplo:1-5significa “de los minutos 1 al 5”./: Define intervalos. Ejemplo:*/10significa “cada 10 minutos”.@reboot: Ejecuta la tarea una vez al iniciar el sistema.
Ejemplo con caracteres especiales:
1
*/15 9-17 * * 1-5 /ruta/al/script.sh
Esto ejecutará el script cada 15 minutos, entre las 9:00 AM y las 5:00 PM, de lunes a viernes.
Archivos relacionados con cron
- Archivos de configuración del sistema:
/etc/crontab: Archivo global para tareas programadas del sistema./etc/cron.d/: Directorio donde se pueden agregar archivos de configuración adicionales.
- Directorios especiales:
/etc/cron.daily/: Scripts que se ejecutan diariamente./etc/cron.weekly/: Scripts que se ejecutan semanalmente./etc/cron.monthly/: Scripts que se ejecutan mensualmente.
Ver logs de cron
Para verificar si las tareas programadas se están ejecutando correctamente, puedes revisar los logs del sistema:
1
cat /var/log/syslog | grep cron
Ejemplo práctico
Supongamos que tienes un script llamado backup.sh que realiza un respaldo de tus datos. Quieres que se ejecute todos los días a las 2:00 AM.
- Abre el archivo
crontab:1
crontab -e - Agrega la siguiente línea:
1
0 2 * * * /ruta/al/backup.sh
- Guarda y cierra el archivo. Ahora, el script se ejecutará automáticamente todos los días a las 2:00 AM.
Resumen
crontabes una herramienta para programar tareas automáticas en sistemas Unix/Linux.- Las tareas se definen en un archivo con una sintaxis específica basada en minutos, horas, días, meses y días de la semana.
- Puedes usar comandos como
crontab -epara editar tareas ycrontab -lpara listarlas. - Es ideal para automatizar procesos repetitivos como respaldos, limpieza de archivos o actualizaciones.
