Może to być nieco mylące, ponieważ istnieją różne implementacje crona. Było też kilka błędów, które zepsuły tę funkcję, i są też przypadki użycia, w których po prostu nie zadziała, szczególnie jeśli wykonasz zamknięcie / uruchomienie zamiast restartu.
Robaki
punkt danych 1
Omówiono tutaj jeden z takich błędów w Debianie, zatytułowany: cron: zadania @reboot nie są uruchamiane . Wydaje się, że dotarło to również do Ubuntu, czego nie mogę bezpośrednio potwierdzić.
punkt danych 2
Dowód błędu w Ubuntu wydaje się być potwierdzony tutaj w tym SO Q&A zatytułowanym: @reboot cronjob nie wykonuje się .
fragment
komentarz nr 1: .... 3) Twoja wersja crond może nie obsługiwać @reboot czy używasz crond vix? ... pokaż wyniki użytkownika crontab -l -u
komentarz # 2: ... Dobrym pomysłem może być skonfigurowanie go jako skryptu inicjującego zamiast polegania na konkretnej wersji @reboot crona.
komentarz # 3: ... @ MarkRoberts usunął restart i zmodyfikował 1 * * * *, do * / 1 * * * *, problem został rozwiązany! Gdzie mam wysłać przedstawiciela Marka? Dziękuję Ci!
Przyjęta odpowiedź w tym pytaniu i odpowiedzi zawierała również ten komentarz:
Wydaje mi się, że Lubuntu nie obsługuje składni @Reboot Cron.
Dodatkowe dowody
punkt danych nr 3
Dodatkowym dowodem był wątek, że ktoś próbował zrobić to samo i denerwował się, że to nie zadziałało. Nosi tytuł: Wątek: Cron - zadania @reboot nie działają .
fragment
Re: Cron - zadania @reboot nie działają
Cytat Zamieszczone przez ceallred View Post To mnie zabija ... Próbowałem skryptu opakowania. Uruchomienie ręczne generuje plik dziennika ... restartuje się, a zadanie nie uruchamia się ani nie tworzy pliku dziennika.
Syslog pokazuje, że CRON uruchomił zadanie ... ale ponownie, brak danych wyjściowych i proces nie działa. 15 lipca 20:07:45 RavenWing cron [1026]: (CRON) INFO (Uruchamianie zadań @reboot) 15 lipca 20:07:45 RavenWing CRON [1053]: (przywrócony) CMD (/ home / ceallred / Scripts / run_spideroak. sh> /home/ceallred/Scripts/SpiderOak.log 2> i 1 i)
Wygląda na to, że cron nie lubi polecenia @reboot ... Jakieś inne pomysły?
Ok ... Częściowo rozwiązany. Oznaczę ten jako rozwiązany i rozpocznę nowy wątek z nowym problemem .....
Myślę, że odpowiedzią było, że mój zaszyfrowany katalog domowy nie został podłączony, gdy CRON próbował uruchomić skrypt (przechowywany w / home / nazwa użytkownika / skrypty). Przeniesiono do / usr / scripts i zadanie działa zgodnie z oczekiwaniami.
Teraz wydaje się, że jest to kwestia pająka pająka. Proces rozpoczyna się, ale do czasu zakończenia procesu rozruchu nie ma go. Z jakiegoś powodu zgaduję awarię ... Nowy wątek, aby o to zapytać.
Dzięki za wszelką pomoc!
Gdy ten powyżej użytkownik zorientował się, jaki jest jego problem, był w stanie zacząć @reboot
pracę od wpisu crontab użytkownika.
Nie jestem do końca pewien, jakiej wersji crona używa się na Ubuntu, ale wydaje się to wskazywać, że użytkownik może @reboot
również użyć lub że błąd został naprawiony w pewnym momencie w kolejnych wersjach crona.
punkt danych # 4
Testowałem na CentOS 6 następujące i działało.
Przykład
$ crontab -l
@reboot echo "hi" > /home/sam/reboot.txt 2>&1
Następnie ponownie uruchomiłem system.
$ sudo reboot
Po ponownym uruchomieniu.
$ cat reboot.txt
hi
Wynos
- Wydaje się, że ta funkcja jest obsługiwana zarówno dla wpisów crontab systemu, jak i użytkownika.
- Musisz upewnić się, że jest obsługiwany / działa w twojej konkretnej dystrybucji i / lub wersji pakietu cron.
Aby dowiedzieć się więcej o tym, jak działa ten mechanizm, @reboot
natknąłem się na tego posta na blogu, który omawia wnętrze. Nosi tytuł: @reboot - wyjaśnianie prostej magii cron .
Debugowanie crond
Można zwiększyć poziom szczegółowości crond
, dodając następujące elementy do tego pliku konfiguracyjnego w dystrybucjach opartych na RHEL / CentOS / Fedora.
$ more crond
# Settings for the CRON daemon.
# CRONDARGS= : any extra command-line startup arguments for crond
CRONDARGS="-L 2"
Prawidłowe poziomy to 0, 1 lub 2. Aby przywrócić ten plik do domyślnego poziomu rejestrowania, po prostu usuń po zakończeniu "-L 2"
debugowania sytuację.