cron y crontab
cron es el daemon clásico de Unix que ejecuta comandos según una programación. Cada usuario tiene un crontab, editado con crontab -e, en el cual cada línea tiene cinco campos de tiempo (minuto, hora, día del mes, mes, día de la semana) seguidos del comando. Las tareas del sistema se encuentran en /etc/crontab y /etc/cron.d/.
1Los campos de tiempo
'30 2 * * *' significa las 02:30 todos los días; '*/10 * * * *' cada diez minutos; '0 9 * * 1' las 09:00 todos los lunes. El día de la semana 0 y 7 corresponden al domingo.
2Archivos del sistema
Los archivos en /etc/cron.d/ y /etc/crontab tienen un campo adicional, el nombre de usuario, entre el tiempo y el comando. Directorios como /etc/cron.daily contienen scripts que se ejecutan una vez al día.
3Errores comunes
cron se ejecuta con un entorno mínimo: use rutas completas o configure PATH en el crontab. La salida se envía por correo al propietario o se pierde; rediríjala a un archivo de registro. El carácter % tiene un significado especial en las líneas de crontab y debe escaparse como \%.
4temporizadores de systemd
En distribuciones con systemd, las unidades .timer son una alternativa que incluye registro en el journal, retrasos aleatorios y recuperación de ejecuciones perdidas (Persistent=true).
Cómo añadir una tarea diaria
- Abra su crontab:
crontab -e - Añada una línea, por ejemplo: 30 2 * * *
/usr/local/bin/backup.sh>>/var/log/backup.log2>&1 - Guarde y salga; cron detecta el cambio automáticamente.
- Liste las tareas:
crontab -l
Precauciones
crontab -relimina todo el crontab sin preguntar.- Pruebe el comando manualmente con el mismo usuario antes de programarlo.
Artículos relacionados
- unidades de systemd y systemctlQué es una unidad de systemd, los tipos de unidades comunes y cómo iniciar, detener, habilitar e inspeccionar servicios con systemctl.
- logrotateQué hace logrotate, cómo funciona su configuración en /etc/logrotate.conf y /etc/logrotate.d, y cómo probar una regla de forma segura.
- journalctl y el diario de systemdCómo leer registros con journalctl, comprobar cuánto espacio utiliza el diario y reducirlo de forma segura con las opciones --vacuum.
Fuentes
- crontab(5) man7.org
- crontab(5) (Debian) manpages.debian.org
- systemd.timer(5) man7.org
Última revisión: