Generador de expresiones cron

Elige una plantilla o escribe una línea de crontab. La herramienta explica cada uno de los cinco campos, dice en palabras sencillas cuándo se ejecuta la tarea y lista sus próximas ejecuciones, para que puedas revisar una programación antes de ponerla en un servidor.

Programaciones habituales
Editar cada campo
Cuándo se ejecuta Cada 15 minutos, todos los días.

Las tareas cron necesitan un servidor siempre encendido. Un VPS pequeño ejecuta copias de seguridad, informes y scripts las 24 horas. Desde 3,02 € al mes hoy, entre 2226 servidores.

Tu línea de crontab

En el servidor, ejecuta crontab -e, pega la línea con tu propio comando y guarda. crontab -l lista las tareas que tienes.

crontab -e
*/15 * * * * /path/to/script.sh >> /var/log/job.log 2>&1
CampoValorCoincide con
Minuto*/150, 15, 30 y 45
Hora*cualquier valor
Día del mes*cualquier valor
Mes*cualquier valor
Día de la semana*cualquier valor

Funciona en tu navegador: nada de lo que escribes se envía a ningún sitio.

Cómo se calcula

Una línea de crontab empieza con cinco campos separados por espacios, seguidos del comando que se ejecuta. Cron los revisa cada minuto y ejecuta el comando cuando coinciden el minuto, la hora, el día del mes, el mes y el día de la semana.

┌─ Minuto
│ ┌─ Hora
│ │ ┌─ Día del mes
│ │ │ ┌─ Mes
│ │ │ │ ┌─ Día de la semana
* * * * * /path/to/command

Los dos campos de día se combinan de una forma que sorprende a mucha gente: cuando ambos están restringidos, la tarea se ejecuta cuando coincide cualquiera de los dos. 0 0 13 * 5 se ejecuta todos los días 13 y todos los viernes, no solo el viernes 13. Cuando uno de los dos empieza por *, tienen que coincidir ambos.

Los cinco campos

CampoValores permitidos
Minuto0–59
Hora0–23
Día del mes1–31
Mes1–12 o JAN–DEC
Día de la semana0–7 o SUN–SAT (0 y 7 son domingo)

Caracteres especiales

  • * coincide con todos los valores del campo.
  • , enumera valores: 1,15 es el 1 y el 15.
  • - es un rango: 1-5 es de lunes a viernes en el campo del día de la semana.
  • / es un paso: */10 es cada décimo valor, 5/10 es cada décimo desde el 5, 9-17/2 cada dos horas de 9 a 17.
  • @hourly, @daily, @weekly, @monthly y @yearly sustituyen los cinco campos; @reboot se ejecuta una vez cuando arranca el servidor.

Ejemplo

30 2 * * 1-5 se ejecuta a las 02:30 de lunes a viernes: minuto 30, hora 2, cualquier día del mes, cualquier mes y días de la semana del 1 al 5. Escrita como 30 2 * * 1-5 /usr/local/bin/backup.sh en el crontab, inicia una copia de seguridad cada noche laborable.

Preguntas

¿Qué significa */5 en cron?

Cada quinto valor del campo. En el campo de minutos, */5 ejecuta la tarea en los minutos 0, 5, 10 y así hasta el 55: cada cinco minutos. */15 es cada cuarto de hora, y */2 en el campo de horas es cada dos horas desde medianoche.

¿Cómo añado una tarea cron en un servidor Linux?

Ejecuta crontab -e con el usuario con el que debe ejecutarse la tarea, añade una línea con los cinco campos y el comando, guarda y cierra el editor. crontab -l muestra las tareas, y las tareas de todo el sistema van en un archivo de /etc/cron.d con el nombre de usuario después de los cinco campos.

¿Qué zona horaria usa cron?

La del propio servidor, normalmente UTC en un VPS. 0 3 * * * en un servidor UTC se ejecuta a las 04:00 en Madrid en invierno y a las 05:00 en verano. Algunos cron, como cronie, aceptan una línea CRON_TZ= encima de las tareas; si no, convierte la hora tú mismo.

¿Debo usar cron o un temporizador de systemd?

Cron es más sencillo y funciona en todas partes. Un temporizador de systemd necesita dos archivos pequeños, pero registra cada ejecución en el journal, puede recuperar ejecuciones perdidas mientras el servidor estaba apagado (Persistent=true) y evita que dos copias de la misma tarea se ejecuten a la vez.