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