Traducir una expresión cron: una línea de crontab en frase clara
Vea cuándo se ejecuta una expresión cron: una frase en español, el desglose campo por campo y la lista de las próximas ejecuciones
Sus datos se quedan con usted. La conversión ocurre dentro del navegador; no se envía nada a ningún servidor.
¿Le sirvió esta herramienta?
Gracias, su comentario llegó.
Cómo funciona
Cron es el programador que lanza una tarea en un servidor a horas fijas; la pantalla «Cron Jobs» de un panel de hosting (cPanel, Plesk) pide exactamente la misma expresión. Una expresión estándar tiene cinco campos: minuto, hora, día del mes, mes y día de la semana. Pegue a la izquierda una expresión que haya escrito o copiado de un tutorial; a la derecha, una frase indica cuándo se ejecuta. Por ejemplo, «*/15 9-17 * * 1-5» se lee «Cada 15 minutos, entre las 09:00 y las 17:59, de lunes a viernes», seguido de las primeras ejecuciones (13:15, 13:30 …). Un comando al final de la línea (como /home/usuario/respaldo.sh) se muestra aparte; los comentarios que empiezan con # y ajustes como MAILTO= se omiten, así que puede pegar toda la salida de crontab -l. Las fechas siguen el reloj de su dispositivo. Muchos servidores marcan la hora UTC; como el centro de México quedó fijo seis horas por detrás desde que se eliminó el horario de verano en 2022, una línea «0 9 * * *» en un servidor así se dispara a las 3:00 de la madrugada en Guadalajara o Monterrey.
Esta herramienta también se busca como generador cron, generador crontab, cron cada 5 minutos.
¿Qué es Cron?
Cron es el servicio que funciona en segundo plano en los servidores Linux y Unix y lanza una tarea en el minuto previsto, sin intervención de nadie. Se encarga de trabajos repetitivos como respaldos, vaciar una cola de correos o generar el informe diario de un sitio web. La pantalla «Cron Jobs» de un panel de hosting es solo un formulario que agrega líneas a este servicio.
¿Qué es Crontab?
El crontab (cron table) es el archivo de texto con las tareas programadas de un usuario; se edita con crontab -e y se lista con crontab -l. Cada línea lleva cinco campos de tiempo y después el comando que se ejecutará. Las líneas que empiezan con # son comentarios, y líneas como MAILTO= guardan ajustes, por ejemplo a quién se envía por correo la salida.
¿Cuál es la diferencia entre cron de Linux y cron de Quartz?
Cron en Linux tiene cinco campos y trabaja al minuto; Quartz (y Spring en Java) añade al principio un campo de segundos, lo que permite programaciones como «cada 10 segundos». Quartz conoce además un campo opcional para el año, L para el último día del mes, W para el día hábil más cercano y # para «el segundo lunes del mes». La diferencia que más errores causa es la numeración de los días: en Quartz 1 es domingo y en Linux 1 es lunes.
Día del mes y día de la semana juntos: la regla del O
Casi todos leen «0 0 1,15 * 1» como «el 1 y el 15, si caen en lunes». Cron en Linux no funciona así: cuando el día del mes y el día de la semana están restringidos a la vez, la tarea se ejecuta en cuanto coincide CUALQUIERA de los dos. Esa línea se ejecuta a medianoche el día 1, el día 15 y, además, todos los lunes. La herramienta escribe «o» en la frase y añade una nota.
Hay una excepción: si un campo empieza con asterisco (como «*/2»), cron lo considera sin restricción y entonces exige que coincidan los dos campos. Por eso «0 0 */2 * 1» significa «días impares que caen en lunes». Algunas bibliotecas de JavaScript omiten este detalle; esta página sigue el servicio cron que realmente se instala en Linux (cronie, Vixie cron). En Spring es al revés: los dos campos deben coincidir siempre.
Linux, Spring o Quartz: ¿qué sintaxis usa usted?
La pantalla Cron Jobs de su hosting, el crontab de un servidor Linux, los CronJobs de Kubernetes y GitHub Actions usan la sintaxis de Linux de cinco campos. En Java, la expresión @Scheduled de Spring añade al principio un campo de segundos y pide seis campos. Quartz también empieza por los segundos, admite un séptimo campo opcional para el año, obliga a poner «?» en el día del mes o en el día de la semana y numera los días desde 1: en Quartz 1 es domingo y 2 lunes, mientras que en Linux y Spring 1 es lunes.
La detección automática mira el número de campos y los símbolos: «?», «L», «W» o «#» indican Quartz, seis campos Spring, cinco campos Linux. La sintaxis elegida aparece en el resultado. Como la última palabra de una línea de Linux de seis palabras puede ser un comando («0 5 * * * respaldo.sh»), elija la sintaxis a mano si tiene dudas; un número de día leído con la sintaxis equivocada se desplaza un día.
Expresiones cron frecuentes
Estas líneas cubren las programaciones más buscadas; copie una en el panel izquierdo para ver sus próximas ejecuciones y luego ajústela a sus horarios.
- */5 * * * * — cada 5 minutos
- 0 * * * * — cada hora en punto
- 0 3 * * * — cada noche a las 03:00
- 30 8 * * 1-5 — de lunes a viernes a las 08:30
- 0 9 * * 1 — cada lunes a las 09:00
- 0 0 1 * * — el día 1 de cada mes a medianoche (@monthly)
- 0 0 1 1 * — cada 1 de enero a medianoche (@yearly)
Preguntas frecuentes
¿Cómo se lee una expresión cron?
De izquierda a derecha hay cinco campos: minuto (0-59), hora (0-23), día del mes (1-31), mes (1-12) y día de la semana (0-7; 0 y 7 son domingo). El asterisco significa «todos los valores», la coma forma una lista (1,15), el guion un rango (9-17) y la barra un paso (*/15 = cada 15). «30 2 * * *» significa todos los días a las 02:30.
¿Cómo se escribe un cron que se ejecute cada 5 minutos?
Escriba «*/5 * * * *». El */5 del campo de minutos se dispara en los minutos 0, 5, 10 … 55. Para limitarlo al horario de oficina, restrinja también la hora: «*/5 9-18 * * *».
¿Por qué mi tarea cron no se ejecuta a la hora que puse?
Lo más común es la zona horaria: si el servidor está en UTC, «0 9 * * *» se ejecuta a las 3:00 en la Ciudad de México (y a las 10:00 u 11:00 en Madrid). Revise la hora del servidor con el comando date o desplace la expresión según la diferencia. La segunda causa frecuente es llenar a la vez el día del mes y el día de la semana; cron se conforma con uno de los dos.
¿Qué significan @daily y @reboot en un crontab?
@daily (o @midnight) equivale a «0 0 * * *»: todos los días a medianoche. @hourly, @weekly, @monthly y @yearly son atajos similares. @reboot no depende del calendario: se ejecuta una vez cada vez que arranca el servidor o el servicio cron, por eso no se puede calcular la próxima ejecución.