Probleme einen java-Befehl über die crontab-Datei auszuführen
Hallo!! Meine Aufgabe ist es ein WebAnalysetool über die Crontab-Datei zu automatisieren. Es handelt sich dabei um das Tool webalizer. Da die zu analysierenden logs von einem anderen Server kommen ist dem webalizer jeweils ein java-script für down load und upload vor- bzw. nachgeschaltet. Daraufhin habe ich für jeden schritt ein Shell-Script erstellt, was wenn man es auf der Console ausführt auch hervorangend funktioniert. Wenn ich die Shell-Scripte dann von der crontab ausführen lasen will, findet das startenden SHELL-Script java nicht mehr. Hat einer eine Idee wie die SHELL-Scripte gestartet bekomme die die java aufrufe beinhalten. Mit freundlichen Grüssen Ralf Polakowski
Hi Ralf On Fri, Jul 13, 2001 at 12:53:19PM +0200, Ralf Polakowski wrote:
Wenn ich die Shell-Scripte dann von der crontab ausführen lasen will, findet das startenden SHELL-Script java nicht mehr.
crontab Aufrufe landen in einer ziemlich nackigen shell, dh. es fehlen viele Variablen die in /etc/profile und in anderen startscripten beim normalen user login gesetzt werden. Der einfachste Weg ist in der Crontab diese fehlenden Variablen und möglichst nur diese zu setzten: SHELL=/bin/sh # oder was auch immer du als shell verwenden willst PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin MAILTO=irgendnearmesaudiedenmistauchliest@irgendwo.com # # 0 1 * * * . /irgendwo/envscript ; /tu/was/immer/du/willst/nachts/um/eins oben die 3 Sachen kann cron selber auswerten und weiter geben, alles andere muss im aufruf selber gesourced werden, dafür ist dieser Punkt vor /irgendwo/envscript verantwortlich. in /irgendwo/envscript schreibst du alle sachen rein die für dein environment nötig sind, was das sein kann siehe /etc/profile oder ~.bashrc oder was auch immer du da einsetzt. Ein set auf der kommandozeile hilft meist auch schon weiter. MfG. Falk
On Fre, 13 Jul 2001 at 13:19 (+0200), Falk Sauer wrote:
On Fri, Jul 13, 2001 at 12:53:19PM +0200, Ralf Polakowski wrote:
Wenn ich die Shell-Scripte dann von der crontab ausführen lasen will, findet das startenden SHELL-Script java nicht mehr.
crontab Aufrufe landen in einer ziemlich nackigen shell, dh. es fehlen viele Variablen die in /etc/profile und in anderen startscripten beim normalen user login gesetzt werden.
Ja.
Der einfachste Weg ist in der Crontab diese fehlenden Variablen und möglichst nur diese zu setzten:
SHELL=/bin/sh # oder was auch immer du als shell verwenden willst PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin MAILTO=irgendnearmesaudiedenmistauchliest@irgendwo.com
Jein. Wenn man das so macht, muss man dafür sorgen, dass die gesetzten Variablen für _alle_ crontab-Aufrufe passen oder dies in den einzelnen Scripts immer wieder überschreiben.
# # 0 1 * * * . /irgendwo/envscript ; /tu/was/immer/du/willst/nachts/um/eins
oben die 3 Sachen kann cron selber auswerten und weiter geben, alles andere muss im aufruf selber gesourced werden, dafür ist dieser Punkt vor /irgendwo/envscript verantwortlich.
Nein. crontabs können jede beliebige Variable mit einem sog. environment setting setzen, das ist nicht auf die o. g. drei beschränkt (gerade getestet). Quelle: man 5 crontab
in /irgendwo/envscript schreibst du alle sachen rein die für dein environment nötig sind, was das sein kann siehe /etc/profile oder ~.bashrc oder was auch immer du da einsetzt. Ein set auf der kommandozeile hilft meist auch schon weiter.
Man kann die Variablen allerdings auch im Script selber setzen, dann braucht man kein envscript. Jan
Hi Jan On Fri, Jul 13, 2001 at 02:42:38PM +0200, Jan Trippler wrote:
On Fre, 13 Jul 2001 at 13:19 (+0200), Falk Sauer wrote:
SHELL=/bin/sh # oder was auch immer du als shell verwenden willst PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin MAILTO=irgendnearmesaudiedenmistauchliest@irgendwo.com
Jein. Wenn man das so macht, muss man dafür sorgen, dass die gesetzten Variablen für _alle_ crontab-Aufrufe passen oder dies in den einzelnen Scripts immer wieder überschreiben.
jepp, den hinweis hab ich wohl vergessen
# # 0 1 * * * . /irgendwo/envscript ; /tu/was/immer/du/willst/nachts/um/eins
oben die 3 Sachen kann cron selber auswerten und weiter geben, alles andere muss im aufruf selber gesourced werden, dafür ist dieser Punkt vor /irgendwo/envscript verantwortlich.
Nein. crontabs können jede beliebige Variable mit einem sog. environment setting setzen, das ist nicht auf die o. g. drei beschränkt (gerade getestet).
was sich durch jahrelange Praxis doch so alles an Vorgehensweisen festigt ist immer wieder interessant an sich selbst zu beobachten. ;-) Inwieweit das sogar ne gnu Spezialität ist kann ich grad nicht überprüfen.
Man kann die Variablen allerdings auch im Script selber setzen, dann braucht man kein envscript.
er schrieb glaub ich was von mehreren Aktionen die er machen will da ist das mit dem envscript was man dann nur einmal braucht irgendwie einfacher, ja ich geb zu ich bin faul. ;-) Natürlich könnte er es ebenso im script selber sourcen. MfG. Falk
On Fre, 13 Jul 2001 at 17:26 (+0200), Falk Sauer wrote:
On Fri, Jul 13, 2001 at 02:42:38PM +0200, Jan Trippler wrote: [...]
Man kann die Variablen allerdings auch im Script selber setzen, dann braucht man kein envscript.
er schrieb glaub ich was von mehreren Aktionen die er machen will da ist das mit dem envscript was man dann nur einmal braucht irgendwie einfacher, ja ich geb zu ich bin faul. ;-) Natürlich könnte er es ebenso im script selber sourcen.
Dann würde ich allerdings einen noch höheren Grad an Faulheit aufsetzen und die Variablenzuweisungen mitsamt den Script-Aufrufen in _ein_ Script packen und nur das aus crontab heraus aufrufen ;-) Tatsächlich mache ich sowas auf meinem Server, um alle nächtlichen Aktivitäten, die er so durchrappeln soll, in einem admin.sh Script zu bündeln. Jan
On Fre, 13 Jul 2001 at 12:53 (+0200), Ralf Polakowski wrote: [Webalizer ...]
Daraufhin habe ich für jeden schritt ein Shell-Script erstellt, was wenn man es auf der Console ausführt auch hervorangend funktioniert. Wenn ich die Shell-Scripte dann von der crontab ausführen lasen will, findet das startenden SHELL-Script java nicht mehr.
Hat einer eine Idee wie die SHELL-Scripte gestartet bekomme die die java aufrufe beinhalten.
Es fehlen sicher einige Umgebungsvariablen für den Java-Aufruf. crontab hat nicht das gleiche Environment zur Verfügung wie der angemeldete Benutzer. Vergleiche mal im Zweifelsfall die Ausgabe des env-Kommandos (bau es in Dein Script am Anfang ein und leite die Ausgabe in eine Datei um). Wahrscheinlich fehlt in PATH der Pfad zu java. Ergänze ihn am Anfang des Scripts und dann sollte es laufen. Jan
participants (4)
-
Falk Sauer
-
Jan.Trippler@t-online.de
-
Konrad Neitzel
-
Ralf Polakowski