shell script läuft nicht über crontab, läuft wunderbar manuell
Habe ich versucht zu exportieren meine Pfade und Variablen und crontab noch nicht mein Skript auszuführen. Ich bin sicher, ich mache etwas falsch.
Habe ich ein shell-Skript, das ausgeführt wird eine jar-Datei. Dies ist nicht korrekt arbeiten.
Nach der Lektüre um, die ich gelesen habe dieses ist Häufig durch falsche Pfade durch einen cron laufen über seine eigene shell-Instanz und daher nicht die gleichen Voreinstellungen einrichten, da mein Profil nicht.
Hier ist, was mein Skript sieht wie heute, nach mehreren änderungen:
#!/bin/bash --
. /root/.bash_profile
/usr/bin/java -jar Pharmagistics_auto.jar -o
...
diese sind die wichtigsten Teile des Skripts, der rest sind einfache shell basiert.
Kann mir jemand sagen was ich falsch mache?
Warum verwenden Sie einen relativen Pfad zum java-binary statt eines absoluten Pfades?
wahrscheinlich mehr geeignet für serverfault oder superuser
Sorry, ich gues ich bin ein wenig aus der Berührung mit meinem " nix nutzen. Wie würde ich herausfinden, den absoluten Pfad zu meiner java Programm? tut 'whereis java" nicht zählen? Ich glaube, Sie können sich auf meine Tippfehler usr/bin/java. Ich habe da korrigiert diesen. Wenn dieses nicht ist, was du meintest, bitte lassen Sie mich wissen, und ich werde es beheben.
Ist es möglich, dass die Berechtigungen von Pharmagistics_auto.jar erlauben nicht den cron-daemon, um es auszuführen? Was ist, wenn Sie hat 'chmod +x Pharmagistics_auto.jar" und dann versucht? Sie könnten auch versuchen, 'java', um zu bestimmen, wo java läuft aus. "echo" ist Ihr Freund in shell-Skripten. Hoffe, das hilft.
Ich habe so weit gegangen, zu führen ein 'chmod +777 ...' auf .jar-Datei in Frage, und noch kein Glück. Die java ausgegeben, die die folgenden Ergebnisse '/usr/bin/java', so wie es aussieht bin ich mit dem schreiben, der ausführbaren java-Datei. und absolut Zustimmen, ich habe geworfen, in ein paar echo ' s schon, die führen mich zu wissen, dass alle Befehle in der Skript-arbeiten mit Ausnahme des java -jar Teil. die Befehle, die ich verwende sind einfach 'mv' oder 'finden' - Befehle. also ich bin mir nicht sicher, was ich hier vermisst
wahrscheinlich mehr geeignet für serverfault oder superuser
Sorry, ich gues ich bin ein wenig aus der Berührung mit meinem " nix nutzen. Wie würde ich herausfinden, den absoluten Pfad zu meiner java Programm? tut 'whereis java" nicht zählen? Ich glaube, Sie können sich auf meine Tippfehler usr/bin/java. Ich habe da korrigiert diesen. Wenn dieses nicht ist, was du meintest, bitte lassen Sie mich wissen, und ich werde es beheben.
Ist es möglich, dass die Berechtigungen von Pharmagistics_auto.jar erlauben nicht den cron-daemon, um es auszuführen? Was ist, wenn Sie hat 'chmod +x Pharmagistics_auto.jar" und dann versucht? Sie könnten auch versuchen, 'java', um zu bestimmen, wo java läuft aus. "echo" ist Ihr Freund in shell-Skripten. Hoffe, das hilft.
Ich habe so weit gegangen, zu führen ein 'chmod +777 ...' auf .jar-Datei in Frage, und noch kein Glück. Die java ausgegeben, die die folgenden Ergebnisse '/usr/bin/java', so wie es aussieht bin ich mit dem schreiben, der ausführbaren java-Datei. und absolut Zustimmen, ich habe geworfen, in ein paar echo ' s schon, die führen mich zu wissen, dass alle Befehle in der Skript-arbeiten mit Ausnahme des java -jar Teil. die Befehle, die ich verwende sind einfach 'mv' oder 'finden' - Befehle. also ich bin mir nicht sicher, was ich hier vermisst
InformationsquelleAutor astro | 2010-02-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, den vollständigen Pfad zu der jar-Datei:
InformationsquelleAutor Dennis Williamson
Ich würde einfach sagen, was du bereits ausgeschlossen: Überprüfen Sie Ihre Pfad und Umgebung.
Da haben Sie bereits getan, starten Sie das Debuggen. Wie schreiben checkpoints in ein logfile um zu sehen, wie weit dein script bekommt (wenn überhaupt gestartet), überprüfen Sie die cronjob-log-Datei für Fehler, überprüfen Sie Ihre E-mail (cron sendet E-mails auf Fehler) und so weiter ...
Nicht sehr spezifisch, sorry.
InformationsquelleAutor ZeissS
"exportieren meine Pfade und Variablen" wird nicht funktionieren, da crontab läuft in eine andere Schale, die durch einen anderen Benutzer.
Auch nicht sicher, ob dies ein Tippfehler ist, wie Sie in der Frage, aber ich sehe:
...und ich kann mir nicht helfen, aber feststellen, Sie sind nicht die Angabe des voll qualifizierten Pfad. Es sucht ein Verzeichnis mit dem Namen "usr" in das aktuelle Arbeitsverzeichnis. Oft mal für crontab, das cwd ist nicht definiert, daher ist Ihr Verweis geht nirgendwo.
Versuchen, den vollständigen Pfad angeben, von root, in etwa so:
Oder, wenn Sie wollen, um zu sehen, ein Beispiel für relative Pfade in Aktion, man könnte auch versuchen:
InformationsquelleAutor robmandu
Ein paar Gedanken.
--
nach der#!/bin/bash
touch /tmp/MY_SCRIPT_RAN && exit
)set -x
undset -v
sobald Sie wissen, es läuft aber tatsächlichRE #2 - geben Sie es in ein Benutzer-Konto auf dem lokalen Rechner, RE #3 - vielen Dank für die Klarstellung. RE #4 - Durch das hinzufügen der
set -x
Befehl um das script, bash wird Ihnen zeigen, wie Sie ausgeführt wird.set -v
liefert weitere Informationen zum Befehl Evaluierung und Erweiterung.2. nicht sicher, ob E-Mails setup für diese box leider nicht. 4. Ich habe den set-v", um das Skript und noch kein Glück. Ich bekomme absolut nichts. Ich änderte das Skript, das nach /usr/bin/java-jar Pharmigistics.jar -o > javalog.txt und die javalog ist immer leer. Ich sehe keine Fehlermeldungen überall, die /var/log/cron sagt mir, es ist die Ausführung meines scripts noch, dass ein Teil von meinem Skript tut sich einfach nichts.
InformationsquelleAutor Kaleb Pederson
Tun, definieren Sie die notwendigen Pfade und env-vars in Ihrem persönlichen .Profil (oder einem anderen script)? Haben Sie versucht, die Beschaffung, die bestimmte Datei (oder ist es das, was Sie tun, bereits mit dem /root/.bash_profile?)
Einem anderen Weg zu Fragen, ist dies: sind Sie sicher, dass, was auch immer notwendigen Wege und env-vars, die Sie erwarten, sind tatsächlich verfügbar?
Wenn nichts anderes, haben Sie versucht, echo ' Ing einzelnen Werte oder nur mit den "env" - Befehl in dein script und dann die überprüfung der stdout?
InformationsquelleAutor robmandu
bieten vollen Pfade zu den jar-Datei, und welche Benutzer Sie ausführen der crontab? Wenn Sie es für einen normalen Benutzer, denken Sie, dass Benutzer über die Berechtigung zum Quell-root-Profil?
InformationsquelleAutor ghostdog74