Cronjob

Guten Morgen zusammen,

ich wollte Root einen weiteren Cronjob hinzufügen.

leider klappt das nicht so ganz...

Es soll jede 15 Minuten ein Script ausgeführt werden, welches unter /home/user/script.sh liegt.

Meine "Crontabregel" sieht so aus:

#minute hour mday month wday command
0,15,30,45 * * * * /home/user/script.sh

Sieht hier vlt. jemand den Fehler?
 
Muss man die Regeln auch neu "landen" oder reicht das, wenn man sie einfach Editiert?
Gerade solle es ja ausgeführt werden, wurde es aber nicht :-(
 
Die Regeln wird sofort übernommen. Sagt Cron denn was in seiner Log? Das müsste /var/log/cron sein, wenn OpenBSD nicht seine eigene Suppe kocht.
 
Der Cronjob war richtig, der Fehler lag im Script.

Hab das Script mit dem kompletten Kommandopfaden ergänzt und nun geht es :)

Danke für die vielen und schnellen antworten!
 
Ob deine Shell das 'env' Kommando kennt weiß ich nicht. Aber Fehlende Umgebungsvariablen bzw. PATH sind ganz typische Ursachen für Probleme mit cron.
 
Dein Problemstellung sieht so aus:
  • Cron setzt $PATH nicht für dich. Deswegen konnte dein Script wie bereits beschrieben nicht alle Executables finden. Sollte es ein Shellscript sein bieten die meisten Shells das "-e" Flag um beim ersten nicht abgefangen Fehler das Script mit dem Statuscode 1 zu beenden. Das kann einem den Arsch retten z.B. wenn das Script mit rm -r "$nowEmpty/$emptyToo" weiter geht um ein temporary Directory zu löschen ;).
  • Es ist fast immer eine sehr schlechte Idee Cronjobs mit höheren Rechten laufen zu lassen als der am wenigsten vertrauenswürdige User mit Schreibzugang auf ein Element des Pfads. In deinem Fall reicht Schreibzugriff auf /home/user um script.sh durch evil-script.sh zu ersetzen. Die *BSD kennen zwar extended flags, die dies verhindern würden z.B. chflags schg, aber das hat andere unschöne Nebenwirkungen. Falls möglich lasse den Cronjob nicht als root laufen. Sollte das Script wirklich Rootrechte brauchen so leg es auch an einem angemessen Ort ab.
 
Zurück
Oben