Wolę trzymać zaplanowane zadania w / etc / crontab, aby na pierwszy rzut oka zobaczyć, co jest zaplanowane do uruchomienia, niezależnie od tego, jakiego użytkownika uruchamia zadanie.
Jedynym problemem jest to, że format nie jest sprawdzany przy zapisie, w przeciwieństwie do crontab -e - więc zbłąkany znak może spokojnie złamać cały cron.
Czy istnieje sposób na sprawdzenie poprawności formatu / etc / crontab przed / po zapisaniu?
Odpowiedzi:
Jedynym niezawodnym sposobem, jaki znalazłem, jest sprawdzenie dziennika.
cron
sprawdza/etc/crontab
co minutę i zapisuje komunikat wskazujący, że został ponownie załadowany lub że wykrył błąd.Więc po edycji uruchom to:
Lub, aby nie czekać pełną minutę, ale tylko do następnej minuty + 5 sekund:
Przykładowe dane wyjściowe z błędem:
Dobra wydajność:
Tak jest w Debianie 8. W innych systemach cron może zalogować się do innego pliku.
(Myślałem, że mogę uniknąć polowania na odpowiedni plik dziennika za pomocą systemd's
journalctl -u cron
, ale to nie pokazało mi tych wpisów w dzienniku i faktycznie z jakiegoś powodu przestałem rejestrować zdarzenia cron)źródło
Innym nowszym rozwiązaniem jest skrypt chkcrontab w języku Python
źródło
Skrypty Wicked Cool Shell mają skrypt powłoki, który sprawdza poprawność plików crontab.
Możesz pobrać archiwum zip zawierające skrypt tutaj
Skrypt nazywa się verifycron
źródło
Znalazłem to fajne rozwiązanie tutaj: https://crontab.guru
Nie tylko sprawdza poprawność pliku crontab, ale wyraźnie mówi, co i kiedy będzie uruchamiany plik crontab, i podkreśla, gdzie są błędy.
źródło
Na Ubuntu wydaje się, że mogę po prostu uruchomić:
UWAGA: ma to efekt uboczny uruchomienia tego cronjob (dzięki @NZD)
Jeśli plik jest nieprawidłowy, wystąpi błąd, taki jak:
źródło
* 4/0 * * /bin/myscript.sh
-4/0
jest nieprawidłowy. ale nie jest złapany przez tę metodę0
zabroniona? unix.stackexchange.com/questions/32027/…