Informática
Expresiones cron explicadas
Pega la línea de crontab sin el comando: obtendrás la descripción en palabras, la tabla de valores de minutos, horas, días, meses y días de la semana y las próximas fechas en que se lanzará la tarea.
Cómo se lee una línea de crontab
Una expresión cron tiene 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, donde 0 y 7 son domingo). El asterisco significa «cualquiera», la coma separa valores, el guion indica un rango y la barra un paso: */15 en los minutos significa 0, 15, 30 y 45.
Así, 0 9 * * 1-5 lanza la tarea a las 9:00 de lunes a viernes, 30 2 1 * * a las 2:30 del primer día de cada mes y */10 * * * * cada diez minutos. Las macros son abreviaturas: @daily equivale a 0 0 * * *, @hourly a 0 * * * * y @weekly a 0 0 * * 0.
Hay una excepción que sorprende a muchos: si tanto el día del mes como el día de la semana son distintos de *, cron ejecuta la tarea cuando se cumple cualquiera de los dos. 0 12 1 * 1 no significa «el día 1 si es lunes», sino «cada día 1 y cada lunes».
Errores frecuentes
- Escribir * * * * * pensando en «una vez al día»: significa cada minuto.
- Olvidar que cron usa la zona horaria del servidor, no la de quien mira: aquí las próximas ejecuciones están en la zona de tu navegador.
- Esperar una tarea el día 31 de cada mes: en los meses de 30 días y en febrero simplemente no se ejecuta.
Preguntas frecuentes
¿Cron admite segundos?
El cron clásico no: la unidad mínima es el minuto. Algunos sistemas, como Quartz o Spring, añaden un sexto campo para los segundos, con otra sintaxis.
¿Qué pasa con el cambio de hora?
La noche en que se adelanta el reloj, una tarea a las 2:30 puede saltarse; cuando se atrasa, puede ejecutarse dos veces. Por eso las tareas importantes se programan fuera de la franja de 2 a 3 o en UTC.
¿Puedo usar los nombres de días y meses?
Sí: MON-FRI para los días y JAN-DEC para los meses, en inglés y sin distinguir mayúsculas y minúsculas.
Cómo funciona este cálculo
Cada campo se expande en el conjunto de valores permitidos: * es todo el rango, a-b un rango, x/n los valores desde x en pasos de n, y las listas separadas por comas se unen. En el día de la semana, el 7 pasa a ser 0 (domingo). Un día es válido si su mes está permitido y, cuando ambos campos de días están restringidos, si lo está el día del mes o el de la semana. Las próximas ejecuciones se buscan día a día, hasta ocho años, en la zona horaria del navegador.
Cálculos relacionados
Formateador y validador JSON
Formatea, minifica y valida JSON: sangría, claves ordenadas y posición exacta de los errores.
Probador de expresiones regulares
Prueba una regex sobre un texto: coincidencias resaltadas, grupos de captura y sustitución, en JavaScript.
Conversor de timestamp Unix
De timestamp Unix a fecha y hora y viceversa: segundos, milisegundos, UTC y hora local.