Jak sprawić, by cron wykonywał zadania co godzinę w godzinach pracy?

3

Staram się, aby skrypt był uruchamiany dwa razy co godzinę w godzinach pracy w dni powszednie, aw konfiguracji crona mam następujące ustawienia:

\# m     h       dom     mon     dow     command

8,48    8-17    *       *       1-5      python ~/documents/scripts/script.py

Jednak nic nigdy nie jest wykonywane. Próbowałem różnych wariantów, ale wydaje się, że nic się nie dzieje. ręczne uruchomienie skryptu działa dobrze.

mój jedyny inny skrypt crona działa jak w zegarku:

45      5       *       *       *       python ~/documents/scripts/rdiff.py

Ten codziennie wykonuje kopię zapasową mojego systemu na zewnętrzny dysk o 05:45.

czego mi brakuje?

memius
źródło
Czy masz coś w swoim dzienniku cron (np. /Var/log/cron.log) lub w syslog? Dodatkowo, czy próbowałeś pisać co godzinę i dzień tygodnia, oddzielając je przecinkami zamiast myślnika?
Toine42
nie było cron.log. w dzienniku systemowym pojawiło się kilka wiadomości, które wyglądały tak: 25 maja 15:17:01 box CRON [5582]: (root) CMD (cd / && run-parts - report /etc/cron.hourly) i także niektóre, które wyglądały tak: 25 maja 07:54:25 box anacron [3594]: Normalne wyjście (1 uruchomienie zadania) (nie wiem jak sformatować to lepiej) spróbuję sformatować mój crontab tak, jak sugerowałeś, i zobacz co się stanie.
memius
Czy twój skrypt korzysta ze zmiennych środowiskowych? Zobacz to .
Kamil Maciorowski
brak zmiennych środowiskowych: zmieniłem to na: 8,48 12,13,14,15,16,17 * * 5,6,7 echo ding> ~ / crontasklogg.txt i nic się nie zmieniło. nic się nie dzieje. brak wgnieceń w pliku.
memius
Podejrzewam, że problem tkwi w samym skrypcie Python, a nie we wpisie crontab. Czy możesz opublikować treść script.py?
Larssend,

Odpowiedzi:

2

Twoja specyfikacja czasu crontab jest poprawna, właśnie ją zweryfikowałem:

1,41 0-17 * * 1-5 /bin/echo 'running'

Ponieważ drugi wpis w crontabie działa poprawnie, pythonmożna go znaleźć w domyślnym środowisku (ogólnie bezpieczniej jest używać pełnej ścieżki do plików wykonywalnych).

Ponieważ sam skrypt działa poprawnie w terminalu, ale nie po uruchomieniu z crona, mogę jedynie stwierdzić, że problem polega na różnicy w środowisku między twoją regularną sesją interaktywną a nieinteraktywną, którą zapewnia cron.

Odpowiedzi wzdłuż tej linii (wiele z nich na kilku stronach SE) mogą pomóc w dalszym badaniu: https://serverfault.com/questions/337631/crontab-execution-doesnt-have-the-same-environment-variables-as-executing -użytkownik

Dan Cornilescu
źródło