script de shell no se está ejecutando a través de crontab, funciona muy bien manualmente

StackOverflow https://stackoverflow.com/questions/2224969

  •  19-09-2019
  •  | 
  •  

Pregunta

He intentado exportar mis caminos y variables y crontab todavía no funciona mi guión. Estoy seguro de que estoy haciendo algo mal.

Tengo un script que se ejecuta un archivo JAR. Esto no está funcionando correctamente.

Después de leer todo He leído esto es comúnmente debido a los caminos incorrectos debido a cron ejecuta a través de su propia instancia de shell y por lo tanto no tiene la misma configuración de preferencias como perfil hace.

Esto es lo que mi script se parece hoy después de varias modificaciones:

#!/bin/bash --

. /root/.bash_profile

/usr/bin/java -jar Pharmagistics_auto.jar -o

...

esas son las piezas más importantes de la secuencia de comandos, el resto se basa cáscara sencillo.

Puede alguien decirme lo que estoy haciendo mal?

¿Fue útil?

Solución

Trate de especificar la ruta completa al archivo jar:

/usr/bin/java -jar /path/to/Pharmagistics_auto.jar -o

Otros consejos

Yo sólo te diría lo que ya han descartado:. Compruebe su camino y el medio ambiente

Desde que has hecho todavia esto, iniciar la depuración. Al igual que los puestos de control de escritura en un archivo de registro para ver hasta dónde llega la secuencia de comandos (si incluso empezó en absoluto), comprobar el archivo de registro de errores tarea programada, revisar su correo (cron envía mails en los errores) y así sucesivamente ...

No es muy específica, lo siento.

"exportar mis caminos y variables" no va a funcionar desde crontab ejecuta en un shell diferente por un usuario diferente.

Además, no estoy seguro si esto es un error tipográfico en la forma en que ha introducido la pregunta, pero no veo:

  

usr/bin/java

... y no puedo dejar de notar que no estás especificando la ruta completa. Se busca un directorio llamado "usr" en el directorio de trabajo actual. oft veces para crontab, la caquexia crónica no está definido, por lo tanto, su referencia va a ninguna parte.

Trate de especificar la ruta completa desde la raíz, así:

  

/usr/bin/java

O, si desea ver un ejemplo de encauzamiento relativa en acción, también se podría tratar:

  

cd /

     

usr/bin/java

Algunas reflexiones.

  1. Eliminar el -- después de la #!/bin/bash
  2. Asegúrese de dirigir la salida de la escritura visto por cron para el correo o en otro lugar donde se puede ver que (por ejemplo mailto = desiredUser)
  3. Compruebe si se ejecuta un script y no bloqueado por un script de larga duración diferente (por ejemplo, en la segunda línea, añadir touch /tmp/MY_SCRIPT_RAN && exit)
  4. Depurar la secuencia de comandos utilizando set -x y set -v una vez que se sabe que está actualmente en funcionamiento

Cómo se define caminos necesarios y env VARs en su .profile personal (o con otros caracteres)? ¿Usted ha intentado suministrar ese archivo en particular (o es que lo que está haciendo ya con /root/.bash_profile?)

Otra forma de hacer esto es: ¿está seguro de que todo lo caminos y env vars necesarias esperas están realmente disponibles

?

Si nada más, ¿ha tratado echo'ing valores individuales o simplemente usando el comando "env" en su guión y luego revisar la salida estándar?

proporcionar rutas completas a su archivo jar, y lo que el usuario que se ejecuta el crontab en? Si lo configura para un usuario normal, ¿cree que el usuario tiene permiso para Perfil de origen de la raíz?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top