Calculadora de CRON
¿Qué es CRON y para qué sirve?
CRON es un demonio de Unix que ejecuta comandos o scripts de manera automática en intervalos específicos. Es fundamental para automatizar tareas repetitivas como backups, rotación de logs, actualizaciones y más. Con una calculadora CRON puedes traducir cualquier expresión CRON a lenguaje natural para verificar que tus tareas CRON se ejecuten en el momento exacto que necesitas.
Formato de expresión CRON
Una expresión CRON tiene 5 campos separados por espacios:
┌─────────────── minuto (0 - 59)
│ ┌─────────────── hora (0 - 23)
│ │ ┌─────────────── día del mes (1 - 31)
│ │ │ ┌─────────────── mes (1 - 12)
│ │ │ │ ┌─────────────── día de la semana (0 - 6)
│ │ │ │ │
* * * * *
Caracteres especiales
- * - Cualquier valor
- , - Lista de valores (1,3,5)
- - - Rango de valores (1-5)
- / - Paso (* /5 cada 5 minutos)
Ejemplos comunes
- 0 * * * * - Cada hora
- 0 0 * * * - Todos los días a medianoche
- 0 0 * * 0 - Todos los domingos a medianoche
- 0 */6 * * * - Cada 6 horas
- 30 4 1,15 * * - A las 4:30 los días 1 y 15 de cada mes
Cómo usar esta calculadora CRON
Sigue estos tres pasos para calcular CRON y obtener tu expresión en lenguaje natural:
- Escribe la expresión CRON
Ingresa tu expresión CRON de 5 campos en el campo de texto principal o utiliza los selectores individuales (minuto, hora, día del mes, mes, día de la semana) para construirla campo por campo. También puedes elegir uno de los ejemplos predefinidos para comenzar rápidamente.
- Lee la descripción en lenguaje natural
La calculadora convertirá automáticamente tu expresión CRON a lenguaje natural, indicándote exactamente cuándo se ejecutará la tarea. Además, verás las próximas 5 fechas y horas de ejecución para confirmar que la programación es la correcta.
- Copia y añade a tu crontab
Una vez que la expresión es correcta, usa el botón "Copiar" para guardarla en el portapapeles. Luego ejecuta
crontab -een tu terminal Linux y pega la expresión junto con el comando que deseas programar.
Con esta calculadora CRON gratuita puedes verificar cualquier expresión antes de añadirla a tu crontab, evitando errores de sintaxis que podrían impedir la ejecución de tus tareas programadas.
Casos de uso reales de CRON
CRON se utiliza en entornos de producción para automatizar todo tipo de tareas de administración de sistemas. Estos son algunos de los casos de uso de CRON más habituales:
- Backups automáticos: Programa copias de seguridad diarias o semanales de bases de datos y archivos críticos. Por ejemplo,
0 2 * * *ejecuta un script de backup cada noche a las 2:00 AM, cuando la carga del servidor es menor. Es una de las tareas CRON más comunes en cualquier servidor de producción. - Rotación de logs: Los archivos de log pueden crecer rápidamente y llenar el disco. Con CRON puedes ejecutar logrotate o scripts personalizados para comprimir y rotar logs periódicamente:
0 0 * * 0 /usr/sbin/logrotate /etc/logrotate.conf. - Limpieza de cachés temporales: Elimina archivos temporales y cachés que ya no son necesarios. Una tarea como
0 4 * * * find /tmp -type f -atime +7 -deletelimpia archivos del directorio /tmp con más de 7 días sin acceso. - Envío programado de reportes: Genera y envía reportes por correo electrónico de forma automática. Por ejemplo, un resumen semanal de ventas cada lunes a las 8:00 AM con la expresión
0 8 * * 1 /scripts/reporte-semanal.sh. - Sincronización entre servidores: Mantén directorios sincronizados entre múltiples servidores usando rsync. Una expresión CRON como
0 * * * * rsync -avz /datos/ usuario@servidor:/backup/replica datos cada hora. - Renovación de certificados SSL: Certbot puede ejecutarse automáticamente con CRON para renovar certificados Let's Encrypt antes de que expiren:
0 0 * * * certbot renew --quiet. - Monitoreo de servicios: Scripts de healthcheck que verifican que los servicios críticos estén funcionando y los reinician si es necesario. Por ejemplo, cada 5 minutos:
*/5 * * * * /scripts/healthcheck-nginx.sh.
Estos son solo algunos ejemplos de cómo programar tareas Linux con CRON. Puedes usar nuestra calculadora para construir y verificar cualquier expresión antes de ponerla en producción.
Mejores prácticas de CRON
Para evitar problemas y asegurar que tus tareas CRON se ejecuten de forma confiable, sigue estas mejores prácticas de CRON:
- Redirigir la salida a un archivo de log
Por defecto, CRON envía cualquier salida por correo al usuario. Es mejor redirigir stdout y stderr a un archivo de log para su revisión:
*/5 * * * * /usr/local/bin/script.sh >> /var/log/script.log 2>&1
- Usar rutas absolutas siempre
CRON ejecuta los comandos con un PATH mínimo (/usr/bin:/bin). Si tu script usa herramientas en /usr/local/bin, debes especificar la ruta completa o configurar PATH en el crontab:
30 2 * * * /usr/bin/python3 /home/usuario/scripts/cleanup.py
- No asumir variables de entorno
CRON no carga los archivos de perfil del usuario (.bashrc, .bash_profile). Si tu script necesita variables de entorno, defínelas dentro del script o al inicio del crontab:
- Programar tareas pesadas en horas de baja actividad
Ejecuta backups, actualizaciones y procesos intensivos entre las 2:00 AM y las 5:00 AM, cuando el uso del servidor es mínimo. Evita programar tareas pesadas durante horas pico para no afectar el rendimiento de tus aplicaciones.
- Usar comentarios descriptivos en el crontab
Documenta cada tarea con comentarios que expliquen qué hace, quién la creó y cuándo. Mantener un crontab bien documentado facilita el mantenimiento a largo plazo:
# Backup nocturno de la base de datos - 2:30 AM
30 2 * * * /scripts/backup-db.sh
- Monitorear la ejecución de las tareas
Implementa un sistema de logging y alertas. Puedes hacer que tus scripts notifiquen si fallan usando MAILTO o integrando con herramientas de monitoreo como Nagios, Datadog, Prometheus o simplemente revisando los logs periódicamente con grep.
- Usar la sintaxis correcta de 5 campos
La sintaxis estándar de CRON usa 5 campos. No confundas con las palabras clave especiales como @reboot, @daily o @weekly, que son extensiones de algunos sistemas (Vixie cron, cronie) y no forman parte del estándar POSIX. Si necesitas portabilidad entre sistemas, usa siempre la sintaxis de 5 campos y verifícala con una calculadora de expresiones CRON.
Seguir estas CRON best practices te ayudará a mantener un sistema estable y evitar tareas que no se ejecutan como esperabas. Usa nuestra calculadora para validar cada expresión antes de ponerla en producción.
Preguntas frecuentes sobre CRON
¿Qué significa cada campo en una expresión CRON?
Una expresión CRON tiene 5 campos: minuto (0-59), hora (0-23), día del mes (1-31), mes (1-12), día de la semana (0-6, donde 0=domingo). Por ejemplo, "30 4 * * 1-5" significa "a las 4:30 AM, de lunes a viernes". Puedes usar nuestra calculadora CRON gratuita para traducir cualquier expresión a lenguaje natural al instante.
¿Cómo programar una tarea cada hora con CRON?
Para ejecutar una tarea cada hora, usa la expresión "0 * * * *". Esto ejecutará el comando al minuto 0 de cada hora, todos los días. Para cada 30 minutos usa "*/30 * * * *", y para cada 15 minutos "*/15 * * * *". Nuestra calculadora CRON te ayuda a visualizar estas expresiones fácilmente.
¿Cuál es la diferencia entre CRON y Crontab?
CRON es el demonio del sistema que ejecuta las tareas programadas. Crontab es el archivo de configuración (y el comando para editarlo) donde defines las tareas. Cada usuario tiene su propio crontab. El archivo se edita con "crontab -e" y se lista con "crontab -l". Siempre verifica tus expresiones con una calculadora CRON antes de añadirlas al crontab.
¿Cómo hacer que un script se ejecute todos los días a medianoche?
Usa la expresión "0 0 * * *". El primer 0 representa el minuto, el segundo 0 la hora (medianoche = 00:00), y los tres asteriscos significan "todos los días, todos los meses, todos los días de la semana". Para programar tareas Linux a otras horas, usa nuestra calculadora CRON.
¿Qué significan @reboot, @daily, @weekly en CRON?
@reboot ejecuta la tarea una vez al iniciar el sistema. @daily (equivalente a 0 0 * * *) ejecuta la tarea una vez al día a medianoche. @weekly (0 0 * * 0) la ejecuta cada domingo a medianoche. @monthly (0 0 1 * *) el primer día de cada mes. @yearly (0 0 1 1 *) el 1 de enero. Estas palabras clave son compatibles con la mayoría de sistemas Linux modernos (Vixie cron, cronie) pero no forman parte del estándar POSIX, por lo que si necesitas portabilidad, es mejor usar la sintaxis de 5 campos.
¿Cómo sé si mi tarea CRON se ejecutó correctamente?
Puedes verificar la ejecución revisando los logs del sistema. En la mayoría de distribuciones Linux, los logs de CRON se encuentran en /var/log/syslog o /var/log/cron. Ejecuta "grep CRON /var/log/syslog" para ver las últimas ejecuciones. También puedes redirigir la salida de tus scripts a un archivo de log personalizado añadiendo ">> /var/log/mitarea.log 2>&1" al final del comando, y configurar MAILTO en tu crontab para recibir notificaciones por correo en caso de error.
¿Puedo programar una tarea cada 30 segundos con CRON?
No, CRON tiene una resolución mínima de 1 minuto. No es posible programar tareas en intervalos de segundos con CRON estándar. Como alternativa, puedes usar un bucle con sleep dentro del script: "while true; do comando; sleep 30; done", o utilizar systemd timers que sí soportan unidades de tiempo más precisas. Otra opción es usar "sleep 30 && comando" en combinación con una tarea CRON que se ejecute cada minuto.
¿CRON funciona en Windows?
No, CRON es una herramienta nativa de Unix/Linux. Windows no incluye CRON, pero ofrece alternativas como el Programador de tareas de Windows (Task Scheduler), que permite programar tareas con interfaz gráfica y disparadores avanzados. También puedes usar PowerShell con ScheduledJobs, o instalar soluciones de terceros como Cron for Windows o Cygwin si prefieres la sintaxis CRON. En entornos WSL (Windows Subsystem for Linux), CRON funciona dentro de la distribución Linux instalada.
Herramientas relacionadas
Visualizador de CRON
Timeline visual interactivo de expresiones CRON
Generador de RFC de Cambio
Crea documentos de cambio de sistema estandarizados
Conversor K8s a Helm Chart
Convierte manifiestos Kubernetes en charts de Helm con valores parametrizables.
Optimizador de sysctl
Genera configuración sysctl optimizada para tu servidor