crontab funktioniert nicht für die Ausführung von java-Klasse
testjob.sh
#!/bin/bash
export JAVA_HOME=/usr/java/jdk1.6.0_07
echo "Java Home is $JAVA_HOME"
export CLASSPATH=.:..:$CLASSPATH:
echo "Path is is $PATH"
echo "CLASSPATH is is $CLASSPATH"
$JAVA_HOME/bin/java TestJob
echo "$JAVA_HOME/bin/java TestJob"
crontab -e
* * * * * /usr/testjob.sh >> /usr/result.txt 2>&1
wenn ich shell-Skript manuell läuft es gut, aber wenn es ausgeführt wird über crontab-job, Fehler auftreten, da die Klasse nicht gefunden..
bitte vorschlagen..
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie einen Blick auf diese. Sollte Ihre Frage beantworten
Wo kann ich das setzen von Umgebungsvariablen, die crontab verwenden?
Wieder Lesen Sie diese http://linuxshellaccount.blogspot.com/2007/10/crontab-and-your-environment.html\
Der einfachste Weg, können Sie sicherstellen, dass Sie die gleiche Umgebung, in cron als Sie beim ausführen einer Skript als normaler Benutzer ist die "Quelle" der Umwelt in das Skript einfügen einer Zeile wie:
. /etc/profile
. /home/user/.Profil
oben auf dein script (unter dem #! Linie). Die wörtliche Punkt, Leerzeichen, Dateiname Muster, teilt der shell eingelesen werden, um alle Variablen in dieser Datei, so dass Sie laufen konnte Sie Ihre cron-job mit der gleichen Umgebung, als wenn Sie es testen manuell, was möglicherweise vermeiden Sie Probleme, die durch die Punkte 1 und 2 oben.
Den classpath gesetzt ist "." und "..", was bedeutet, dass das aktuelle Verzeichnis und das übergeordnete Verzeichnis. Also, wenn Sie Sie lokal auszuführen, müssen Sie in einem bestimmten Verzeichnis, damit es funktioniert.
Setzen Sie den classpath zu einem absoluten Verzeichnis, in Ihr Skript ein.
Zu überprüfen, in welchem Verzeichnis ist das aktuelle Verzeichnis Sie können auch auf
in Ihre
testjob.sh
Skript veranschaulichen die Unterschiede beim Aufruf "von Hand" und durch crontab.