/ / L'esecuzione di jar con cron genera errore: '/ bin / sh: 1: java: non trovato' - java, linux, cron

L'esecuzione di jar con cron genera errore: '/ bin / sh: 1: java: not found' - java, linux, cron

Ho pianificato il mio lavoro di eseguire tutti i giorni alle 12:30 con questo comando:

30 12 * * * java -jar test.jar

Genera errore:

/bin/sh: 1: java: not found

Ho provato a eseguire questo comando: java -jar test.jar da shell e ha funzionato bene.

Ora non capisco, direi che sta succedendo perché JAVA_HOME la variabile d'ambiente non è impostata, ma perché funziona dalla shell?

risposte:

1 per risposta № 1

L'errore ti dice che la shell non è in grado di localizzare il file java binario da eseguire. Questo non ha nulla a che fare con il JAVA_HOME variabile di ambiente, ma con il PATH variabile consultata da sh per trovare qualsiasi comando.

Quando esegui il tuo compito da cron, la shell non ha ricevuto la stessa inizializzazione della shell interattiva in cui il comando funziona per te. Lo troverai ugualmente JAVA_HOME neanche lì.


1 per risposta № 2

Il tuo ambiente di shell di login è diverso da quello del tuo cronjob. Uso envper stampare il tuo ambiente.

Controlla il percorso su entrambi - All'interno di cron (qualcosa di simile) 30 08 * * * env > ~/cronenv. Nella tua shell di login basta usare env. Quindi confrontare le variabili PATH. Come @Marko Topolnik ha già dichiarato che il tuo PATH all'interno di cron ovviamente non contiene i tuoi eseguibili java.


0 per risposta № 3

Puoi aggiungere una riga nel tuo file crontab che contiene il percorso di cui hai bisogno:

# m h  dom mon dow   command
PATH=.....

Probabilmente hai bisogno di qualcosa del genere:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Puoi anche usare echo $PATH per scoprire cosa hai nel tuo ambiente normale e semplicemente utilizzare quel valore.