Próbowałem wyeliminować wiele typowych błędów,
upewnienie się, że ŚCIEŻKI są dostępne dla crona
na końcu pliku crontab znajduje się linia końcowa
strefę czasową konfiguruje:
cd /etc cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
Uruchamiając date
bash otrzymuję:
Tue Sep 17 15:14:30 SGT 2013
Aby sprawdzić, czy cron używa tego samego czasu,
* * * * * date >> date.txt
daje tę samą datę wyjściową w date.txt.
Oto skrypt, który próbuję wykonać:
event.sh
:
#!/usr/bin/env bash
echo data > /root/data.txt
Korzystając crontab -e
z poniższej linii,
* * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
15 * * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
Jednak gdy wypróbowałem kilka innych argumentów, mam nadzieję, że zadziała o godzinie 2.50:
50 14 * * * /bin/bash /root/event.sh >/tmp/debug.log 2>&1
lub
50 14 * * * (cd /root ; ./event.sh >/tmp/debug.log 2>&1)
przestanie działać. Wygląda na to, że jest problem z moją godzinną kłótnią. W /tmp/debug.log
pliku nie można również znaleźć niczego .
ROZWIĄZANIE:
Okazało się, że muszę ponownie uruchomić usługę cron po dokonaniu zmian w TZ.
* * * * * /bin/bash /root/event.sh >/tmp/debuge.log 2>&1
* * * * * date
i potwierdź, że date
pokazuje oczekiwany czas. Zauważ, że ustawienie zmiennej środowiskowej TZ z poziomu pliku crontab może nie wpływać na strefę czasową używaną przez samego demona cron, ale wpłynie na procesy uruchamiane przez cron, więc jeśli ustawisz TZ na swoim crontabie, sugeruję tymczasowe skomentowanie i ustawianie czasu za pomocą strefy czasowej zegara systemowego (prawdopodobnie UTC, jeśli uruchamiasz system Linux pojedynczo, ale może to być czas lokalny).
~/event.sh
spróbować z/home/username/event.sh