Wie behebe ich den Crontab fehler?
moin habe in crontab -u mc -e die unten stehenden zeilen reingepackt aber leider starten die Server nicht was kann ich tuhen
@reboot /Netzwerk/Minecraft/BauServer/start.sh >/dev/null 2>&1
@reboot /Netzwerk/Minecraft/Cloud/start.sh >/dev/null 2>&1
3 Antworten
@reboot <username> /Netzwerk/Minecraft/BauServer/start.sh >/dev/null 2>&1
Schau mal ins Logfile, ob da etwas zu sehen ist.
Ich muß mich korrigieren, bei User Crontabs entfällt das Feld mit dem Username.
Ansich logged cron schon, was er so in etwa macht:
Dec 27 04:02:01 [CROND] (root) CMD ([ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.daily)
Dec 27 04:02:04 [CROND] (root) CMDEND ([ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.daily)
Dec 27 05:01:01 [CROND] (root) CMD (run-parts /etc/cron.hourly)
Dec 27 05:01:01 [CROND] (root) CMDEND (run-parts /etc/cron.hourly)
Du hast ja STDIN/STDERR nach /dev/null umgeleitet, das würde sonst im ZWeifelsfall auch an dne user gemailed.
Und vielleicht noch als Anmerkung, die crontab selbst muß reguläre Datei sein (oder link auch reguläre Datei) darf nicht ausführbar sein und nur der BEsitzer darf Schreibrechte haben - Das könnte allerdings mit der Implementierugn variieren.
Unter Umständen sollte die crontab Datei so aussehen:
To run /usr/bin/sample.sh at 12.59 every day and supress the output
59 12 * * * simon /usr/bin/sample.sh > /dev/null 2>&1
wobei simon der User ist, mit dem der Server gestartet werden soll.
Die Befehlszeile im crontab wird nicht von sh ausgeführt, damit werden die Redirektionen wie 2>&1 vermutlich nicht verstanden.
Willst du einen shell script starten, kann es unproblematischer sein, statt den script aufzurufen, stattdessen den Befehlszeileninterpreter, also die shell in dem Fall, aufzurufen, und der den Pfad zum Script und dessen Namen als Argument mitzugeben. Das räumt z.B. auch mit nicht gesetzten eXecute flags in den Permissions vom Script auf.
Und als weitere Möglichkeit würde sich anbieten, die beim boot gewünschten Aktionen aus /etc/rc.local auszuführen, statt vom crond.
Wenn das der system crontab ist, und nicht der User crontab, dann fehlt noch der Name des users, der Eigentümer vom Prozess wird.
Die Befehlszeile im crontab wird nicht von sh ausgeführt, damit werden die Redirektionen wie 2>&1 vermutlich nicht verstanden.
Ich zitiere einfach mal:
The entire command portion of the line, up to a newline or a "%" character, will be executed
by /bin/sh or by the shell specified in the SHELL variable of the cronfile. A "%" character in the command, unless escaped with a backslash (\), will be changed into
newline characters, and all data after the first % will be sent to the command as standard input.
Danke für Korrektur. Dann sollte Fragesteller meinen ersten Absatz besser ignorieren, da falsch.
Ich lass ihn trotzdem in der Antwort, sonst ist nicht deutlich, worauf sich das Zitat bezieht.
Ach, ich habe das mit dem Nutzernamen verpeilt. So Sachen passieren, nicht jede Implementierung ist ja exakt gleich, nicht jede Umgebung verhält sich identisch. Aber über das exec() mit /bin/sh scheint halbwegs Konsens zu herrschen :-D.
da wird doch aber keine erstellt oder wo muss ich kucken