Guía rápida de la sintaxis de cron

Los cinco campos de cron, los caracteres especiales, los atajos tipo @daily y horarios resueltos con sus próximas ejecuciones, además de las diferencias con Quartz.

Última revisión:

AdSense Placeholder
Slot: header_reference_page
En esta página

Una expresión cron consta de cinco campos separados por espacios que indican cuándo se ejecuta una tarea; en una línea del crontab, el comando va a continuación. Las próximas ejecuciones de los ejemplos se calcularon con un pequeño script que implementa las reglas de Vixie cron, a partir del sábado 10 de octubre de 2026 a las 12:00. Pegue expresiones numéricas en el explicador de expresiones cron para verlas en lenguaje llano.

Los cinco campos

┌───────────── minute        0-59
│ ┌─────────── hour          0-23
│ │ ┌───────── day of month  1-31
│ │ │ ┌─────── month         1-12 or jan-dec
│ │ │ │ ┌───── day of week   0-7 or sun-sat (0 and 7 are both Sunday)
│ │ │ │ │
* * * * *  /path/to/command

En orden: minuto, hora, día del mes, mes y día de la semana (el domingo es 0 o 7).

Caracteres especiales

Carácter Significado Ejemplo Se lee como
* Todos los valores * * * * * Cada minuto
, Lista 0 9,17 * * * A las 09:00 y a las 17:00
- Rango (inclusivo) 0 9 * * 1-5 09:00 de lunes a viernes
/ Paso */15 * * * * Cada 15 minutos (:00, :15, :30, :45)
a-b/n Paso dentro de un rango 0 8-18/2 * * * 08:00, 10:00 ... 18:00
nombres Nombres de mes o de día en inglés, sin distinguir mayúsculas (el cron clásico de Vixie solo admite nombres sueltos, no listas ni rangos de nombres) 0 4 * * sun 04:00 los domingos

Los pasos cuentan desde el inicio del rango, no desde el reloj: */7 en el campo de minutos se dispara en :00, :07 ... :56 y vuelve a hacerlo en :00, es decir, con un intervalo de 4 minutos.

Atajos

Atajo Equivale a Se ejecuta
@reboot (ninguno) Una vez, cuando arranca el demonio de cron
@yearly, @annually 0 0 1 1 * A medianoche del 1 de enero
@monthly 0 0 1 * * A medianoche del día 1
@weekly 0 0 * * 0 A medianoche entre el sábado y el domingo
@daily, @midnight 0 0 * * * Cada medianoche
@hourly 0 * * * * En el minuto 0 de cada hora

Ejemplos resueltos

Expresión Significado Próximas ejecuciones desde el sáb 10-10-2026 12:00
*/15 * * * * Cada 15 minutos 12:15, 12:30, 12:45, 13:00
0 * * * * Cada hora en punto 13:00, 14:00, 15:00
0 */6 * * * Cada 6 horas sáb 18:00, dom 00:00, dom 06:00
0 9 * * 1-5 09:00 en días laborables lun 12 oct, mar 13 oct, mié 14 oct
*/10 9-17 * * 1-5 Cada 10 minutos en horario de oficina lun 12 oct 09:00, 09:10, 09:20
0 22 * * 1-5 22:00 de lunes a viernes lun 12 oct, mar 13 oct
30 2 * * 0 02:30 todos los domingos dom 11 oct, dom 18 oct, dom 25 oct
0 0 * * 6,0 Medianoche en fin de semana dom 11 oct, sáb 17 oct, dom 18 oct
0 12 1,15 * * Mediodía los días 1 y 15 jue 15 oct, dom 1 nov, dom 15 nov
0 0 1 * * Medianoche del día 1 de cada mes dom 1 nov, mar 1 dic, vie 1 ene 2027
0 0 1 1,7 * Dos veces al año vie 1 ene 2027, jue 1 jul 2027
0 0 29 2 * Solo el 29 de febrero mar 29 feb 2028, dom 29 feb 2032
0 0 13 * 5 El día 13 o cualquier viernes mar 13 oct, vie 16 oct, vie 23 oct

Vixie cron frente a Quartz

Linux y macOS usan Vixie cron o sus descendientes (cronie, el cron de Debian). El planificador Quartz de Java, y las herramientas basadas en él, usan un formato parecido pero que no es intercambiable.

Característica Vixie / cron estándar Quartz
Campos 5: minuto hora día mes día-semana 6 o 7: segundo minuto hora día mes día-semana [año]
Números del día de la semana 0-7, domingo = 0 o 7 1-7, domingo = 1
Ambos campos de día definidos Se ejecuta si coincide cualquiera No permitido: uno de ellos debe ser ?
? No admitido «Sin valor concreto» en día del mes o día de la semana
L No admitido Último: L en día del mes = último día, 6L = último viernes
W No admitido Día laborable más cercano: 15W
# No admitido N-ésimo día de la semana: 6#3 = tercer viernes
Atajos @daily y similares No admitidos
Días laborables a las 09:00 0 9 * * 1-5 0 0 9 ? * MON-FRI

Algunas bibliotecas (como croniter y muchos planificadores de CI) aceptan también L y # en expresiones de cinco campos, pero los demonios cron simples no; compruébelo antes de depender de ello.

Consejos para el crontab

  • Edite con crontab -e y liste con crontab -l. Los crontabs del sistema, en /etc/crontab y /etc/cron.d/, llevan un campo de usuario adicional antes del comando.
  • Use rutas completas. Cron se ejecuta con un PATH mínimo y sin shell de inicio de sesión.
  • Escape el %. En una línea de crontab, un % sin escapar termina el comando y empieza su entrada estándar: escriba date +\%F.
  • Conserve la salida. Añada >> /var/log/job.log 2>&1 o defina MAILTO= para recibirla por correo.
  • Tenga en cuenta la zona horaria. Convierta un horario a otra región con la calculadora de zonas horarias.

Pruebe estas herramientas

Véase también

  • Glosario Cron
    Cron es el planificador de los sistemas de tipo Unix que ejecuta comandos automáticamente a las horas fijadas por una expresión de.
  • Glosario UTC (tiempo universal coordinado)
    UTC es el estándar de tiempo de referencia mundial a partir del cual todas las zonas horarias se definen como desfases.
  • Hoja de referencia Guía rápida de la línea de comandos de Linux
    Comandos de terminal para archivos, búsqueda, texto, procesos, disco, red y archivos comprimidos, más tuberías, redirecciones.
  • Hoja de referencia Formatos de fecha y hora
    Patrones ISO 8601, códigos strftime, unidades de hora Unix y las trampas de años bisiestos, semanas y horario de verano.

Preguntas frecuentes

En el cron estándar, cuando el día del mes y el día de la semana están ambos restringidos, la tarea se ejecuta cuando cualquiera de los dos coincide. 0 0 13 * 5 se ejecuta todos los días 13 y todos los viernes, no solo los viernes 13.

La zona horaria local del sistema, salvo que el crontab defina otra (por ejemplo CRON_TZ=UTC en cronie). Con los cambios de horario de verano, las tareas programadas en la hora que se salta o se repite pueden omitirse o ejecutarse dos veces; por eso conviene programar las tareas importantes fuera del tramo de 01:00 a 03:00 o usar un servidor en UTC.

AdSense Placeholder
Slot: footer_leaderboard