GNU/Linux >> Tutoriales Linux >  >> Linux

Cron Script no se ejecuta como se esperaba de crontab – Solución de problemas

El problema

Ejecutar un script usando el servicio cron, que se ejecuta normalmente desde el shell pero no muestra el mismo comportamiento cuando se ejecuta desde crontab.

Causa raíz

Una de las causas más frecuentes por las que el trabajo crontab no se ejecuta correctamente es que un trabajo cron no se ejecuta en el entorno de shell del usuario. Otra razón puede ser:no especificar la ruta absoluta de los comandos utilizados en el script. Cuando el script se ejecuta manualmente, la variable de entorno, como PATH, puede ser diferente que cuando se ejecuta desde el cron. Por lo tanto, siempre se recomienda incluir las rutas absolutas de los comandos utilizados en el script.

Por esa razón, cualquier variable de entorno para el usuario que esté presente en un shell normal no estará disponible durante la ejecución del trabajo cron a menos que el script las importe explícitamente.

Por ejemplo, si el shell tiene una variable ORACLE_HOME definida y la incluye en la variable de entorno PATH y el script hace uso de esas variables, el script se ejecutará en la venta, pero cuando se ejecute desde crontab, el script no tendrá conocimiento de esas variables. por defecto.

La solución

Defina o importe ORACLE_HOME y la variable PATH completa en el archivo de secuencia de comandos cron, como se ve cuando está dentro del shell de usuario de Oracle (oracle_user_shell> echo $PATH).

Una buena práctica es importar siempre el entorno de usuario al principio del script script.sh con el comando:

#!/bin/bash
. /home/oracle/.bashrc
[rest of script]

Esto leerá /home/oracle/.bashrc e importará el entorno dentro. Según el entorno del usuario, también puede ser /home/oracle/.bash_profile u otros archivos.

NOTA :Hay un espacio entre el punto “.” y “/casa..”

CONSEJO :para solucionar mejor la ejecución de una entrada crontab, puede cambiarla para registrar la salida en un archivo, por ejemplo:

[* * * * *] /home/oracle/script.sh 2> /tmp/crontab_script_log.txt 2>&1

Nota :Reemplace [* * * * *] con los tiempos de ejecución correctos para su caso.

A continuación, puede consultar /tmp/crontab_script_log.txt para ver el resultado de la ejecución. Si alguna variable no está definida o si el script tiene otros errores, la salida hará que sea más fácil encontrar la causa del problema.


Linux
  1. ¿El comando Rm en Bash Script no funciona con variables?

  2. ¿Cómo ejecutar Sh Script desde un acceso directo de escritorio?

  3. ¿Ejecutar secuencia de comandos Sh desde el archivo * .desktop?

  4. ¿El trabajo de Cron no se ejecuta?

  5. Problema de Crontab:el trabajo de Cron no funciona cuando se usa el porcentaje

Establecer IP estática si no se obtiene de DHCP (script)

Variable de entorno TERM no establecida

Ejecute un script de shell todos los días a una hora específica

matlab ejecuta el script desde la línea de comando de Linux

el trabajo cron ocasionalmente no se ejecuta

¿Por qué mi crontab no funciona y cómo puedo solucionarlo?