Ich habe versucht, viele der häufigsten Fehler zu beseitigen,
sicherstellen, dass die PATHs für cron verfügbar sind
Am Ende der crontab-Datei befindet sich eine Endzeile
Die Zeitzone wird eingestellt von:
cd /etc cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
Laufen date
in bash, erhalte ich:
Tue Sep 17 15:14:30 SGT 2013
Um zu überprüfen, ob cron dieselbe Zeit verwendet,
* * * * * date >> date.txt
gibt das gleiche Datum in date.txt aus.
Dies ist das Skript, das ich ausführen möchte:
event.sh
:
#!/usr/bin/env bash
echo data > /root/data.txt
Mit crontab -e
der folgenden Zeile funktioniert,
* * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
15 * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
Als ich jedoch einige andere Argumente ausprobierte, hoffte ich, dass es um 14.00 Uhr laufen würde:
50 14 * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
oder
50 14 * * * (cd /root ; ./event.sh >/tmp/debug.log 2>&1)
es wird nicht mehr funktionieren. Scheint, als gäbe es ein Problem mit meinem Stundenargument. Auch in der /tmp/debug.log
Datei konnte nichts gefunden werden .
LÖSUNG:
Es stellte sich heraus, dass ich den Cron-Dienst neu starten muss, nachdem ich Änderungen an TZ vorgenommen habe.
* * * * * /bin/bash /root/event.sh >/tmp/debuge.log 2>&1
* * * * * date
und bestätigen Sie, dass date
die erwartete Zeit angezeigt wird. Beachten Sie, dass die Variable TZ - Umgebung innerhalb der crontab möglicherweise nicht die Zeitzone beeinflussen als Daemon selbst durch den cron verwendet, aber es wird Prozesse durch cron gestartet beeinflussen, wenn Sie also TZ in crontab stelle ich es vorübergehend zu kommentieren würde vorschlagen , dass aus und Festlegen der Uhrzeit mithilfe der Zeitzone der Systemuhr (wahrscheinlich UTC, wenn Sie Linux einmal booten, aber möglicherweise die Ortszeit verwenden).
~/event.sh
versuchen, anstatt mit/home/username/event.sh