Generador y traductor de expresiones cron
Escribe o construye una expresión cron campo a campo, léela traducida a español y comprueba cuándo se ejecutará las próximas 5 veces. Útil para crontab de Linux, tareas programadas de servidores y servicios de CI.
Cómo usar el generador de cron
Puedes trabajar de tres maneras: pegar una expresión existente en el campo principal para entender qué hace, editar cada campo por separado (minuto, hora, día del mes, mes y día de la semana) o partir de una plantilla y ajustarla. La traducción y las próximas ejecuciones se recalculan con cada tecla. Las fechas se calculan con la zona horaria de tu navegador; recuerda que el servidor puede usar otra (muchos usan UTC). Para comparar horas entre zonas, usa el conversor de zonas horarias.
Sintaxis de una expresión cron
Una línea de crontab tiene cinco campos separados por espacios, seguidos del comando:
┌ minuto (0–59) ┬ hora (0–23) ┬ día del mes (1–31) ┬ mes (1–12) ┬ día de la semana (0–7, 0 y 7 = domingo)
30 8 * * 1-5 /usr/local/bin/copia.sh
| Símbolo | Significado | Ejemplo |
|---|---|---|
| * | Cualquier valor | * * * * *: cada minuto |
| , | Lista de valores | 0 8,14,20 * * *: a las 8, 14 y 20 h |
| - | Rango | 0 9 * * 1-5: de lunes a viernes |
| / | Intervalo (paso) | */10 * * * *: cada 10 minutos |
| JAN…DEC, SUN…SAT | Nombres en inglés (3 letras) | 0 0 * * SUN: domingos |
También existen macros: @hourly (= 0 * * * *), @daily o @midnight (= 0 0 * * *), @weekly (= 0 0 * * 0), @monthly (= 0 0 1 * *), @yearly o @annually (= 0 0 1 1 *) y @reboot, que se ejecuta una vez al arrancar el sistema.
Ejemplos resueltos
0 2 * * *: copia de seguridad diaria a las 2:00.*/15 9-17 * * 1-5: cada 15 minutos entre las 9:00 y las 17:45, de lunes a viernes.0 0 1,15 * *: a medianoche los días 1 y 15 de cada mes (por ejemplo, para generar informes quincenales).5 4 * * 0: los domingos a las 4:05.0 12 * 1-3 *: a mediodía todos los días de enero a marzo.
Errores frecuentes
- Confundir el orden: el primer campo son los minutos, no las horas.
8 30 * * *no es válido, porque 30 no es una hora. - Olvidar el minuto:
* 3 * * *se ejecuta 60 veces entre las 3:00 y las 3:59. Para una sola vez, usa0 3 * * *. - Día del mes y día de la semana a la vez: si ambos están restringidos, basta con que se cumpla uno. La herramienta lo indica cuando ocurre.
- Rutas y entorno: cron ejecuta con un
PATHmínimo; usa rutas absolutas y redirige la salida (>> /var/log/tarea.log 2>&1) para poder depurar. - Permisos: el script debe ser ejecutable. Comprueba el valor con la calculadora chmod (normalmente 755 o 700).
Si necesitas convertir la fecha de una ejecución a segundos desde 1970 para registrarla en logs, usa la herramienta de timestamp Unix.
Preguntas frecuentes
¿Qué significa */5 en cron?
Significa «cada 5 unidades» empezando por el mínimo del campo. En el campo de minutos, */5 se ejecuta en los minutos 0, 5, 10… 55 de cada hora.
¿Cómo ejecuto una tarea de lunes a viernes?
Usa 1-5 en el quinto campo (día de la semana). Por ejemplo, 0 9 * * 1-5 se ejecuta a las 9:00 los días laborables.
¿En qué zona horaria se ejecuta cron?
En la del servidor, que a menudo es UTC. Esta herramienta calcula las próximas ejecuciones con la zona horaria de tu navegador; si tu servidor usa otra, ajusta la hora.
¿Por qué mi tarea se ejecuta más veces de lo esperado al indicar día del mes y día de la semana?
Porque, si ambos campos están restringidos, cron ejecuta la tarea cuando se cumple cualquiera de los dos (O lógico), no ambos. 0 0 13 * 5 se ejecuta todos los días 13 y además todos los viernes.
¿Cron admite segundos?
El crontab clásico de Unix tiene 5 campos y su resolución mínima es el minuto. Algunas herramientas (Quartz, Spring, ciertos servicios en la nube) añaden un campo de segundos o de año; esta herramienta usa el formato estándar de 5 campos.