Tecnología · GUÍA PRÁCTICA
¿Funciona a mano pero falla en crontab? Reproduce el contexto de cron antes de cambiar el script
Primero demuestra que cron lanzó la línea; después compara usuario, shell, entorno, directorio y salida con la ejecución correcta y valida una ejecución programada.

Un comando que funciona en una terminal interactiva puede fallar bajo cron porque el planificador inicia otro contexto de proceso. Pueden cambiar usuario, shell, PATH, HOME, directorio, secretos y salida.
No amplíes permisos ni cargues todo el perfil de inicio. Demuestra el lanzamiento, captura una ejecución, reproduce el entorno mínimo y añade solo la dependencia ausente.
1. Demuestra que cron intentó la línea
Lee el crontab instalado, el estado de cron o crond y el registro del minuto previsto antes de editar. Sin evento, shell lanzado y programa con salida no cero son fallos distintos.
En una ejecución controlada, redirige stdout y stderr a una ruta absoluta protegida y añade código numérico y hora. Si cron envía correo, verifica esa entrega aparte.
2. Identifica crontab y usuario exactos
Registra si la línea viene del crontab del usuario, de root, de /etc/crontab o de /etc/cron.d. Las tablas del sistema incluyen un campo de usuario y copiar la línea puede cambiar el análisis.
Como cuenta programada, registra id, grupos, HOME, SHELL y el crontab exacto. Quien edita el archivo no es necesariamente quien ejecuta.
3. Crea un registro de diferencias
Compara solo PATH, localización, proxy, configuración y rutas de credenciales que el trabajo necesita. El manual actual dice que cron define SHELL, HOME y LOGNAME.
No vuelques el entorno completo a registros públicos: puede contener tokens. Guarda nombres y presencia censurada, y prueba intérprete y ejecutables con rutas absolutas.
4. Haz explícitos ruta y directorio
Cron no promete iniciar en el directorio del script. Usa cd -- /ruta/absoluta && comando, o convierte en absolutas entradas, salidas, bloqueos y temporales.
Comprueba permisos de recorrido para el usuario programado y la existencia en el mismo espacio. Una prueba como root no demuestra acceso del usuario.
5. Reproduce sin esperar al reloj
Ejecuta como usuario programado con env -i y solo HOME, PATH, SHELL y variables revisadas. Así reproduces el límite sin esperar la próxima hora.
Usa el mismo intérprete y directorio del crontab. Si falla el entorno reducido, investiga contexto o supuestos; si funciona, vuelve a horario, daemon o política.
6. Repara una dependencia y valida una ejecución
Añade solo la ruta, variable, cambio de directorio, archivo de credencial o dependencia ausente. No cargues todo el perfil sin entender efectos ni pongas secretos en crontab o registros legibles.
Programa una ejecución corta y exige inicio, fin, código y el artefacto esperado. Luego restaura el intervalo, elimina depuración temporal y conserva el registro censurado.
