Cron es un gestor de tareas en segundo plano que ejecuta programas definidos en momentos específicos o a intervalos regulares. Es una parte fundamental de la mayoría de los sistemas operativos tipo Unix. Su función es automatizar procesos de mantenimiento, administración y otras tareas del sistema, como la conexión a Internet o la descarga automática de correos electrónicos.
El crontab es un archivo de texto que contiene la configuración y los comandos que cron debe ejecutar.
Los archivos /etc/cron.allow
y /etc/cron.deny
determinan qué usuarios pueden utilizar cron
y definir sus propias tareas. Los usuarios incluidos en cron.allow
(y no en cron.deny
) tienen permitido editar su lista de tareas programadas.
Formato general de una tarea cron:
* * * * * usuario / programa
Los asteriscos representan las siguientes unidades de tiempo:
Minuto (0–59)
Hora (0–23)
Día del mes (1–31)
Mes (1–12)
Día de la semana (0–6), donde 0 = domingo
Después de estos campos, se especifica el comando o script a ejecutar.
Ejemplos de programación
Supongamos que queremos programar la ejecución de un programa llamado ejemplo. En los distintos momentos del día, se configuraría así:
Ejecutar una vez por hora:0 * * * * /usr/local/bin/ejemplo
Ejecutar una vez al día, a medianoche:0 0 * * * /usr/local/bin/ejemplo
Ejecutar una vez por semana, los domingos a medianoche:0 0 * * 0 /usr/local/bin/ejemplo
Ejecutar una vez al mes, el primer día del mes a medianoche:0 0 1 * * /usr/local/bin/ejemplo
Ejecutar una vez al año, el 1 de enero a medianoche:0 0 1 1 * /usr/local/bin/ejemplo
Un ejemplo completo sería:9 18 * * 5 /usr/local/bin/ejemplo
Esto significa que el programa ejemplo se ejecutará todos los viernes (día 5 de la semana), a las 18:09.
Si queremos añadir varios momentos específicos, podemos usar comas sin espacios:9 18 * * 2,5 /usr/local/bin/ejemplo
Esto indica que se ejecutará todos los martes y viernes a las 18:09.
Expresiones frecuentes
-
*/5
→ Cada 5 unidades (minutos, horas, etc.)1-5
→ Rango continuo (por ejemplo, de lunes a viernes)
Caracteres especiales en cron
*
→ Todos los valores posibles
/
→ Frecuencia relativa dentro del rango (ej. 5/15
= cada 15 minutos empezando desde el minuto 5)
%
→ Similar al uso de barra, pero con distinto contexto (menos usado)
,
→ Múltiples valores (ej. 2,3,4
= martes, miércoles, jueves)
-
→ Rango de valores (ej. 2-4
en vez de 2,3,4
)
#
→ Solo para días de la semana, indica el enésimo día (ej. 5#2
= segundo viernes del mes)
L
→ Último valor disponible. Por ejemplo, 4L
significa el último jueves del mes.