Domanda

Ho provato a esportare i miei sentieri e le variabili e crontab ancora non verrà eseguito il mio script. Sono sicuro che sto facendo qualcosa di sbagliato.

Ho uno script di shell che esegue un file jar. Questo non funziona correttamente.

Dopo aver letto in giro che ho letto questo è comunemente a causa di percorsi errati a causa di cron in esecuzione tramite la propria istanza guscio e quindi non ha la stessa configurazione delle preferenze come il mio profilo fa.

Ecco ciò che il mio script appare come oggi, dopo diverse modifiche:

#!/bin/bash --

. /root/.bash_profile

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

...

questi sono i pezzi più importanti dello script, il resto sono shell semplice basa.

Qualcuno può dirmi che cosa sto facendo male?

È stato utile?

Soluzione

Prova a specificare il percorso completo del file jar:

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

Altri suggerimenti

Vorrei solo dirti quello che avete già escluso:. Controlla il tuo percorso e ambiente

Dal momento che avete viene già fatto questo, avviare il debug. Come posti di blocco di scrittura in un file di log per vedere fino a che punto lo script ottiene (se ancora iniziato a tutti), controllare il file di registro cronjob per gli errori, controllare la posta (cron manda mail in caso di errori), e così via ...

Non molto specifico, mi dispiace.

"esportare i miei sentieri e le variabili" non funzionerà in quanto viene eseguito crontab in un guscio di diverso da un altro utente.

Inoltre, non so se questo è un errore di battitura nel modo in cui hai inserito il domanda, ma vedo:

  

usr/bin/java

... e non posso fare a meno di notare che non stai specificando il percorso completo. E 'alla ricerca di una directory chiamata "usr" nella directory di lavoro corrente. Oft volte per crontab, la CWD è definito, quindi il vostro riferimento va da nessuna parte.

Prova a specificare il percorso completo dalla radice, in questo modo:

  

/usr/bin/java

In alternativa, se si vuole vedere un esempio di pathing relativa in azione, si potrebbe anche provare:

  

cd /

     

usr/bin/java

Qualche considerazione.

  1. Rimuovere il -- dopo la #!/bin/bash
  2. Assicurati di indirizzare output dello script visto da cron per posta o da qualche altra parte dove è possibile vederlo (per esempio MAILTO = desiredUser)
  3. Verificare che lo script è in esecuzione e non bloccato da uno script di lunga durata diversa (ad esempio, sulla seconda riga, aggiungere touch /tmp/MY_SCRIPT_RAN && exit)
  4. Debug lo script utilizzando set -x e set -v una volta che sai che è effettivamente in esecuzione

si fa a definire i percorsi necessari e ENV Vars nel vostro .profile personale (o altro script)? Hai provato di sourcing quel particolare file (o è che quello che stai facendo già con /root/.bash_profile?)

Un altro modo di chiedere questo è: siete certi che qualunque percorsi e env vars necessari che ci si aspetta in realtà sono disponibili

?

Se non altro, hai provato echo'ing valori individuali o semplicemente utilizzando il comando "env" nello script e poi rivedere lo stdout?

fornire tutti i percorsi per il file jar, e quali utenti sono in esecuzione il crontab in? Se lo si imposta per un utente normale, pensi che l'utente ha il permesso di Profilo origine della radice?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top