Guides 3 min de lectura

Evita tareas perdidas: asegúrate de que tus cron jobs funcionan bien

Las copias de seguridad, importaciones y limpiezas se ejecutan con cron, y fallan en silencio. Causas habituales de cron jobs que no se ejecutan, cómo diagnosticarlos y cómo recibir una alerta cuando una tarea no se ejecuta.

Los cron jobs hacen el trabajo silencioso que hay detrás de webs y servidores: copias de seguridad, actualizaciones, importaciones, facturas, precalentamiento de caché y limpiezas. Cuando funcionan, nadie se da cuenta. Cuando dejan de funcionar, tampoco, hasta que falta una copia de seguridad o una tanda de facturas nunca llegó a emitirse.

Por qué importan los cron jobs

Cron programa comandos para que se ejecuten automáticamente a horas o intervalos fijos. Eso ahorra tiempo y elimina el riesgo de que alguien olvide una tarea. Pero también significa que un trabajo crítico, como las copias de seguridad nocturnas, depende de un programador que no avisa a nadie cuando algo sale mal.

Motivos habituales por los que un cron job no se ejecuta

Caídas del servidor. Si el servidor está apagado o reiniciándose a la hora programada, la tarea no se ejecuta.

Errores de sintaxis. Un campo incorrecto en la expresión de programación puede hacer que la tarea se ejecute a la hora equivocada o nunca.

Configuración incorrecta. Usuario equivocado, directorio de trabajo equivocado o una tarea añadida a un crontab que nunca se carga.

Diferencias de entorno. Cron se ejecuta con un entorno mínimo. Un comando que funciona en tu shell puede fallar en cron porque falta PATH u otras variables.

Solapamientos y timeouts. Una tarea que dura más que su intervalo puede chocar con la siguiente ejecución. Un tiempo máximo de ejecución en el monitor de la tarea te avisa cuando una ejecución tarda demasiado.

Cómo identificar y solucionar errores

Empieza por los logs. El log del sistema (a menudo /var/log/syslog o el log de cron de tu distribución) muestra si cron lanzó la tarea. La salida de la propia tarea muestra qué pasó después.

Errores típicos y lo que significan:

command not found: usa rutas absolutas o define PATH al principio del crontab.

permission denied: revisa los permisos de los archivos y con qué usuario se ejecuta la tarea.

syntax error: revisa la expresión de programación y las comillas del comando.

Redirige la salida a un archivo de log para que los fallos dejen rastro:

30 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Cómo monitorizar cron jobs

Los logs solo sirven si alguien los lee. La monitorización convierte un fallo silencioso en una alerta. La forma más fiable es un heartbeat: la tarea envía una petición a una URL de monitorización cuando termina. Si la petición no llega en el tiempo previsto, recibes una alerta.

Con los monitores de cron de Uptimecheck, la tarea hace ping a una URL única con GET o POST. El monitor acepta la programación del crontab en tu zona horaria, admite pings de inicio y de fin en un mismo monitor, avisa cuando una ejecución supera su tiempo máximo y puede registrar el código de salida y la salida de la tarea. Si falta un ping, la alerta llega por email, Slack, Microsoft Teams, Discord, Google Chat, Mattermost, Telegram, PagerDuty, ntfy, Pushover, webhook o notificaciones push en el móvil, en todos los planes. Consulta la guía paso a paso en Cómo monitorizar cron jobs.

Buenas prácticas de programación

Programa las tareas pesadas fuera de las horas punta.

Escalona las tareas que usan los mismos recursos en lugar de lanzarlas todas a medianoche.

Usa un bloqueo (por ejemplo, flock) para que una ejecución lenta no se solape con la siguiente.

Revisa las programaciones cuando cambie tu aplicación.

Cron en varios servidores

Cuando la misma tarea existe en varios servidores, decide dónde debe ejecutarse y asegúrate de que se ejecute una sola vez. Ayuda tener una programación centralizada o un bloqueo en un almacén compartido. Dale a cada tarea su propio heartbeat para saber qué servidor se saltó su ejecución.

Cómo proteger los cron jobs

Los cron jobs suelen tener acceso a bases de datos, copias de seguridad y credenciales.

Limita quién puede editar los crontabs.

No pongas secretos en la propia línea del crontab: guárdalos en archivos protegidos o en la configuración del entorno.

Revisa las tareas con regularidad y elimina las que ya no necesites.

Usa los recursos de forma eficiente

Ejecuta las tareas solo con la frecuencia que necesitan y mantén los comandos ligeros. Un informe que nadie lee cada hora puede ejecutarse una vez al día.

Pruébalo antes de confiar en ello

Ejecuta una tarea nueva a mano con el mismo usuario, revisa la salida y solo entonces prográmala. Añade el heartbeat al mismo tiempo para saber desde la primera noche si se ejecutó.

Conclusión

Los cron jobs son imprescindibles e invisibles, y precisamente por eso necesitan monitorización. Corrige las causas habituales, registra la salida y añade un heartbeat a cada tarea importante.

Prueba Uptimecheck gratis durante 14 días, sin tarjeta de crédito.

Herramienta gratuita Explicador de expresiones cron

Sigue leyendo

Guides 6 min de lectura

Cómo monitorizar cron jobs con heartbeats

Los cron jobs fallan en silencio. Un monitor de heartbeat te avisa cuando una tarea programada no da señales a tiempo. Cómo funcionan los heartbeats, cómo añadir uno al crontab y qué ajustes elegir.

Leer

Las caídas son cosa del pasado.

Configura tu primer monitor en menos de un minuto, o echa antes un vistazo a la demo en vivo.

14 días de prueba gratis · Después, gratis con 5 monitores · Sin tarjeta de crédito