Saltar al contenido

Traductor de expresiones cron:
¿qué hace esta línea?

Pega una línea tal cual sale del crontab — los cinco campos solos, o la línea entera con su comando. Obtienes la programación como una sola frase en español, cada campo decodificado y las próximas diez fechas en que se ejecuta. No se envía nada a ningún sitio: el análisis se ejecuta en tu navegador.

Por dónde empezar

Lee los campos en este orden

Las líneas de crontab heredadas casi nunca están documentadas. Lee los cinco campos en este orden:

1 · Cuenta los campos

Cinco campos separados por espacios es crontab. Seis o siete significa Quartz u otro planificador que antepone los segundos — un lenguaje distinto que solo se parece por fuera. Todo lo que va después del quinto campo es el comando, no la programación.

5 = cron · 6+ = no es cron

2 · Lee los dos últimos primero

El día del mes y el día de la semana deciden qué días. Si los dos llevan números, párate ahí: cron se dispara cuando cualquiera de los dos coincide — la regla OR, y el malentendido clásico.

los dos activos → OR, no AND

3 · Luego los dos primeros

El minuto y la hora son a qué hora esos días. Un asterisco en el campo del minuto significa 60 ejecuciones por hora. El campo del mes solo importa cuando no es un asterisco.

* en el minuto = 60×/hora
Ejemplo resuelto

Qué hace cada línea de este crontab

La salida de crontab -l en un servidor que no conoces, traducida línea por línea. Traduce cualquiera de ellas — el botón la carga en el lector de arriba. Las líneas completas también funcionan: pega la línea entera, comando incluido, en la barra de arriba, y el lector toma la programación y nombra la parte que ha ignorado.

# m h dom mon dow command
*/5 * * * *   /usr/local/bin/health-ping.sh
30 3 * * *    /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
0 9 * * 1-5   /usr/local/bin/daily-digest.sh
0 6 1 * *     /usr/local/bin/invoice-run.sh
*/5 * * * *un ping de salud cada 5 minutos, sin parar — 288 ejecuciones al día
30 3 * * *la copia de seguridad nocturna a las 03:30 — fíjate en que es la única línea cuya salida va a un log
0 9 * * 1-5el resumen a las 09:00, solo días laborables — el 1-5 en el último campo es de lunes a viernes
0 6 1 * *la facturación el día 1 del mes a las 06:00 — un 1 en el campo del medio es una fecha, no un día de la semana
Sentido de lectura

Cómo leer cada símbolo de cron

Cada símbolo es una manera abreviada de decir algo, y leerlo mal es la forma más habitual de malinterpretar una programación en una revisión de código:

  • Los pasos cuentan desde el mínimo del campo. */6 en el campo de la hora es 00, 06, 12, 18 — no «seis horas después de la última ejecución».
  • Los números en los dos campos de día significan OR, no AND. Cron se dispara cuando coincide cualquiera de los dos, así que la programación es más amplia de lo que parece.
  • Los nombres y los alias son un dialecto. MON y @daily se leen bien aquí y en la mayoría de los cron — los números son la forma que acepta cualquier cron.
Ver la regla OR demostrada en vivo

Los símbolos, decodificados

a qué equivale cada uno
*cualquier valor — en el campo del minuto, son 60 disparos por horacoincide todo
*/6cada 6.º valor, contado desde el mínimo del campoun paso
9-17un intervalo, con los dos extremos incluidosun rango
1,15exactamente estos valores, nada entre mediasuna lista
MON · JANnombres de 3 letras que aceptan algunos cron — esta página los lee, pero los números son la apuesta más segurase lee aquí
@dailyun alias de 0 0 * * * — ampliado aquí para que veas qué escondeampliado
L # ? WQuartz (Jenkins, Spring) — un crontab rechaza la línea enterano es cron
Forma canónica

0 0 * * 0, @weekly y SUN

Las cuatro líneas de abajo son domingo a medianoche. El traductor lee cada una y devuelve la misma frase y la misma lista de próximas ejecuciones.

Números — la forma que acepta cualquier cron0 0 * * 0
El alias@weekly
El nombre del día0 0 * * SUN
7 también significa domingo0 0 * * 7
De la biblioteca

Expresiones cron de uso diario

Cada una está ya decodificada y enlaza a su página completa — próximas ejecuciones, variantes y la línea de crontab lista para copiar. El conjunto completo vive en la biblioteca de ejemplos de cron.

Tarea cron cada minuto* * * * *
Tarea cron cada 5 minutos*/5 * * * *
Tarea cron cada 15 minutos*/15 * * * *
Tarea cron cada 30 minutos*/30 * * * *
Cron cada hora0 * * * *
Cron cada 6 horas0 */6 * * *
Cron diario a medianoche0 0 * * *
Tarea cron días laborables0 0 * * 1-5
Tarea cron cada domingo0 0 * * 0
Tarea cron mensual0 0 1 * *
Tarea cron trimestral0 0 1 */3 *
Tarea cron anual0 0 1 1 *
Preguntas frecuentes

Las expresiones cron más consultadas

Cada minuto de cada hora, todos los días — 1.440 ejecuciones al día, 525.600 al año. Los cinco campos son comodines, así que nada está restringido. Es la programación correcta para un ping de salud barato y la incorrecta para casi cualquier otra cosa. Si la heredas delante de un script costoso, es la primera línea que hay que cuestionar.

Cada 5.º valor de ese campo, contado desde su mínimo. En el campo del minuto, */5 se dispara en :00, :05, :10 … :55 — 12 veces por hora, en las marcas del reloj. No significa «5 minutos después de la última ejecución»: cron compara con valores del reloj. Así que */7 te da :00, :07 … :56 y luego :00 otra vez — un hueco de 4 minutos al principio de cada hora.

Todos los días a medianoche, hora del servidor — minuto 0 de la hora 0, cualquier fecha, cualquier mes, cualquier día de la semana. Es la programación exacta que abrevia @daily. «Medianoche» es la medianoche del servidor, y en las noches de cambio de horario un servidor con hora local puede saltársela o repetirla.

Idéntico. Los alias se corresponden exactamente: @hourly = 0 * * * *, @daily y @midnight = 0 0 * * *, @weekly = 0 0 * * 0, @monthly = 0 0 1 * *, @yearly = 0 0 1 1 *. La excepción es @reboot — no es una programación en absoluto, se dispara cuando arranca el demonio de cron. Este traductor expande los alias para que siempre veas los cinco campos que hay debajo.

Porque no viene de un crontab. Quartz (Jenkins, Spring), algunos planificadores en la nube y varias librerías cron anteponen un campo de segundos, lo que da seis campos — o siete con un año al final. Un crontab no la instalará. Si el campo de segundos es 0, quítalo y los cinco restantes normalmente se leen como POSIX. Si es cualquier otra cosa, la programación se dispara con una frecuencia inferior al minuto, y el cron normal no puede expresar eso en absoluto.

Es la forma que tiene Quartz de decir «sin valor concreto». Quartz exige que exactamente uno de los dos campos de día se retire, así que uno de ellos lleva un interrogante. El cron POSIX no tiene esa regla ni ningún ? — un simple * cumple la misma función. Cuando los dos campos de día están restringidos, cron se ejecuta con la unión de ambos. Pega un ? en un crontab y la línea se rechaza.

Sí. Pega 30 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1 y el lector toma los cinco campos de la programación, los traduce, y nombra el resto de la línea como la parte que ha ignorado. También reconoce el formato de /etc/crontab, donde hay un nombre de usuario entre la programación y el comando. Lo que no hará es adivinar una línea de seis campos: un campo de segundos al principio significa Quartz, no crontab, y eso es un lenguaje distinto.

Pega la expresión de arriba. La vista de resultado lista las próximas diez ejecuciones como fechas concretas, calculadas por un analizador real en la zona horaria de tu navegador. El crontab en sí se ejecuta con el reloj del servidor: si la máquina va en UTC y tú no, toda la lista se desplaza según tu diferencia horaria. Eso sí, nada te dice que una ejecución haya tenido éxito — cron solo registra que se ha iniciado.

Herramientas gratis, solo el principio.
Uptimia cuida tus sitios.

Disponibilidad, SSL, caducidad de dominio, velocidad de carga, transacciones — monitorizados desde 171+ ubicaciones en todo el mundo. 30 días gratis.

30 días gratis sin tarjeta cancela cuando quieras plan gratuito tras la prueba
100.000+ sitios monitorizados · conforme al RGPD