« Volver

Cron

FundamentosHosting web

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.

Publicaciones relacionadas