Kiedyś crontab -e
dodawałem następujący wiersz do mojego crontab:
* * * * * echo hi >> /home/myusername/test
Jednak nie widzę, aby plik testowy został zapisany. Czy to jest problem z uprawnieniami, czy crontab nie działa poprawnie?
Widzę, że proces cron jest uruchomiony. Jak mogę to debugować?
Edycja - Zapytaj Ubuntu ma fajne pytanie o crontab , niestety to mi nie pomaga.
Edycja 2 - Hmm, wygląda na to, że mój plik testowy ma 214 linii, co oznacza, że przez ostatnie 214 minut był zapisywany co minutę. Nie jestem pewien, na czym polegał problem, ale najwyraźniej zniknął.
fcron
robi to też.Czy dodałeś pustą linię po cronjob ?
źródło
Miałem ten sam problem - działający crontab nagle się zatrzymał po dodaniu nowego wpisu na końcu. Okazało się, że zapomniałem umieścić nową linię po tej ostatniej linii.
Dowiedziałem się, wydając polecenie
i wynik pokazał problem:
Dodanie nowej linii i zapisanie rozwiązało problem.
źródło
Wygląda na to, że to jest naprawione. Następnym razem spróbuj także zarejestrować STDERR. Następujące dane będą logować się tylko do STDOUT, nie STDERR:
Upewnij się, że istnieje również wyraźna klauzula dla STDERR. W przeciwnym razie STDERR może zostać wysłany do użytkownika za pośrednictwem wiadomości e-mail (przy założeniu, że e-mail działa) lub w ogóle nie może pójść, w zależności od konfiguracji Crona.
Moje preferencje to wysłać wyjście cronjob do syslog. W ten sposób korzystam z dowolnej istniejącej infrastruktury syslog (scentralizowane syslogs, Splunk, rotacja logów już obsługiwane, łatwo porównywać wiadomości w / var / log / messages i / var / log / cronjob itp.), I nie jestem spamowanie sysadminów (mnie) niepotrzebnymi wiadomościami e-mail.
źródło
Problem ze mną polegał na tym, że skrypt nie był wykonywalny. Miałem konfigurację crontab -e w ten sposób
A skrypt myscript nie był wykonywalny, więc uruchomiłem
Natychmiast zacząłem widzieć wynik zgodnie z oczekiwaniami.
źródło
Twoja linia cron działa dobrze na moim komputerze, kiedy zmieniam
myusernae
naphunehehe
. Istnieje kilka sposobów, aby dowiedzieć się, co jest nie tak z twoim systemem.Cron zwykle wysyła pocztę do użytkownika, gdy coś jest nie tak. Jeśli zobaczysz komunikat „Masz pocztę”, użyj klienta pocztowego, aby sprawdzić skrzynkę odbiorczą . Lub sprawdź w swoim katalogu domowym, może tam być nazwany plik
dead.letter
.Możesz sprawdzić
/var/log/
wpisy dotyczące crona. Na moim komputerze plik dziennika znajduje się w/var/log/cron/current
(wymaga dostępu do konta root).Jeśli masz dostęp do roota, możesz zatrzymać demona cron i uruchomić go w trybie debugowania. Na przykład użyłbym (zmień
fcron
nazwę twojego demona):źródło
ps -ef | grep cron
i powinieneś zobaczyć linię dla swojego crona. Sprawdź stronę podręcznika cron, aby zobaczyć flagę debugowania. Prawdopodobnie używasz Vixie Cron , w takim przypadku flaga debugowania to-x
. Zabij proces crona i uruchom go ponownie z dodatkową flagą.Najprawdopodobniej, gdy cron zawiedzie, generuje wiadomość e-mail do identyfikatora użytkownika zadania cron na tym komputerze. Jeśli nie masz MTA działającego na twoim komputerze lub nie czytasz ani nie przekazujesz tej poczty gdzie indziej, nie zobaczysz tej wiadomości, nawet jeśli MTA działa.
Dobrym sposobem na uzyskanie błędów crontab za pośrednictwem poczty jest sprawienie, aby twój crontab wyglądał tak:
Oczywiście używaj swojego adresu e-mail zamiast [email protected]. To mówi cronowi, aby wysyłał błędy na Twój adres e-mail, a nie na konto lokalne. Jest to szczególnie przydatne, jeśli masz plik crontab root (lub fragment crontab w /etc/cron.d), który chcesz po prostu wysłać do Ciebie, możesz uniknąć spamowania skrzynki pocztowej lub adresu przekierowania roota.
źródło
Sądzę, że jednym z powodów może być to, że katalog / home / jest zaszyfrowany, a kiedy użytkownik jest wylogowany, cron nie może nic zrobić w tym katalogu.
patrz: https://stackoverflow.com/a/40354269/1279002
źródło