Frage

Ich habe versucht, den Export meine Pfade und Variablen und crontab immer noch nicht mein Skript ausführen. Ich bin sicher, dass ich etwas falsch mache.

Ich habe einen Shell-Skript, das eine JAR-Datei ausgeführt wird. Dies funktioniert nicht richtig.

Nach der Lektüre um habe ich gelesen, dies zu falschen Pfade häufig zurückzuführen ist aufgrund cron über eine eigene Shell-Instanz läuft und deshalb nicht die gleichen Vorlieben Setup hat wie mein Profil der Fall ist.

Hier ist, was mein Skript wie heute nach mehreren Änderungen aussieht:

#!/bin/bash --

. /root/.bash_profile

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

...

das sind die wichtigsten Teile des Skripts sind, der Rest einfach Shell basiert.

Kann mir jemand sagen, was ich falsch mache?

War es hilfreich?

Lösung

Versuchen Sie, den vollständigen Pfad zur JAR-Datei festgelegt wird:

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

Andere Tipps

Ich würde Ihnen sagen, was Sie bereits ausgeschlossen haben. Überprüfen Sie Ihren Weg und Umwelt

Da Sie alredy dies getan haben, starten Sie das Debuggen. Wie Schreib Checkpoints in eine Log-Datei, um zu sehen, wie weit Ihr Skript wird (wenn überhaupt gestartet wird), überprüfen Sie die cronjob Protokolldatei auf Fehler, überprüfen Sie Ihre E-Mail (cron sendet Mails auf Fehler) und so weiter ...

Nicht sehr spezifisch, sorry.

„Exportieren meiner Pfade und Variablen“ wird nicht von einem anderen Benutzer in einer anderen Shell seit crontab Läufen arbeiten.

Auch nicht sicher, ob dies ist ein Tippfehler, wie Sie die Frage eingegeben, aber ich sehe:

  

usr/bin/java

... und ich kann nicht umhin zu bemerken Sie nicht den vollständigen Pfad angeben. Es sieht nach einem Verzeichnis „usr“ im aktuellen Arbeitsverzeichnis genannt. Oft mal für crontab ist die cwd nicht definiert, damit Ihre Referenz geht nirgendwo hin.

Versuchen Sie den vollständigen Pfad von der Wurzel anzugeben, etwa so:

  

/usr/bin/java

Oder, wenn Sie ein Beispiel der relativen Wegfindung in Aktion sehen möchten, können Sie auch versuchen:

  

cd /

     

usr/bin/java

Ein paar Gedanken.

  1. Entfernen Sie die -- nach dem #!/bin/bash
  2. Stellen Sie sicher, Skript-Ausgabe gesehen von cron Mail oder woanders zu lenken, wo Sie es sehen können (z MAILTO = desiredUser)
  3. Überprüfen Sie, ob Ihr Skript ausgeführt wird und nicht von einem anderen langlaufende Skript (zum Beispiel in der zweiten Zeile, fügen touch /tmp/MY_SCRIPT_RAN && exit)
  4. blockiert
  5. Debug das Skript mit set -x und set -v, wenn Sie wissen, dass es tatsächlich läuft

Haben Sie notwendige Pfade definieren und env vars in persönlichen .profile (oder einem anderen Skript)? Haben Sie versucht, diese bestimmte Datei Sourcing (oder ist das, was Sie tun bereits mit /root/.bash_profile?)

Eine andere Möglichkeit, dies zu fragen: Sind Sie sicher, dass alles Nötige Pfade und env vars Sie erwarten, tatsächlich zur Verfügung stehen

?

Wenn nichts anderes, haben Sie einzelne Werte versuchen echo'ing oder einfach nur mit dem „env“ -Befehl in Ihrem Skript und dann die stdout bewerten?

bieten vollständige Pfade zu Ihrer JAR-Datei, und welche Benutzer ausgeführt werden Sie die crontab in? Wenn Sie es sich für einen normalen Benutzer festgelegt, denken Sie, dass Benutzer die Berechtigung hat das Root-Profil zu beziehen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top