Jak dowiedzieć się, dlaczego cron nie wykonuje moich zadań?

15

Używam Ubuntu 14.04, a demon cron działa:

# ps ax | grep cron
822 ?        Ss     0:00 cron

ale nie wykonuje żadnych zadań. Wcześniej otrzymywałem wpisy /var/log/syslogtakie jak to:

2014-05-04T11:47:01.839754+01:00 localhost CRON[29253]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ))

ale teraz nie ma żadnych wpisów związanych z cronem. Otrzymywałem również takie wpisy w /var/log/auth.log:

2014-05-04T11:47:01.839183+01:00 localhost CRON[29252]: pam_unix(cron:session): session opened for user root by (uid=0)
2014-05-04T11:47:13.495691+01:00 localhost CRON[29252]: pam_unix(cron:session): session closed for user root

ale znowu, teraz nie ma żadnych wpisów związanych z cronem.

Nie wiem, czy coś się zmieniło. Próbowałem zrestartować crona:

# service cron restart
cron stop/waiting
cron start/running, process 24907

Próbowałem crontab -edodać zadanie crona, * * * * * date >> /tmp/somefilektóre działało, ale zainstalowało nowe crontab w /var/spool/cron/crontabs/root, ale chcę, aby cron używał pliku w/etc/crontab .

Czy jest jakaś opcja debugowania, której mogę użyć, lub dziennik, który może dać komunikat o błędzie, który mogę zbadać?

jl6
źródło
1
Co wyświetla się na crontab -l?
user345352353
no crontab for root.
jl6
Wierzę, że jeśli po prostu trochę poszukasz na tej stronie SE, znajdziesz odpowiedź. Jest to dość powszechny problem.
mdpc
Crony pobierane za pomocą crontabpolecenia ( -lprzełącznika) są zależne od użytkownika, natomiast /etc/crontabsłużą do przechowywania ogólnosystemowych cronów. Z tego powodu zapisane zadania /etc/crontabnie pojawią się w niczyich crontab -l.
John WH Smith,

Odpowiedzi:

4

Aby dodatkowo pomóc w debugowaniu, co jest nie tak z twoimi cronzadaniami, sprawdź swoją pocztę. Zazwyczaj jest to przechowywane w pliku takim jak /var/mail/<user_name>lub /var/spool/mail/<user_name>.

Te dwa pliki są w rzeczywistości twardymi linkami na moim pudełku Debiana, ale nie wiem, czy jest to standard.

Wyjaśnienie

Ze cron(8)strony:

Podczas wykonywania poleceń wszelkie dane wyjściowe są wysyłane do właściciela crontab (lub do użytkownika wymienionego w zmiennej środowiskowej MAILTO w crontab, jeśli taka istnieje).

Joseph R.
źródło
Sprawdziłem pocztę; żaden nie jest generowany, nie ma też pliku dead.letter.
jl6
0

Pokazałeś, że nie ma crontab dla roota, czy użytkownicy mają wpis crontab? Jeśli używasz tylko roota, możesz również sprawdzić następujące katalogi: /etc/cron.daily/ - /etc/cron.hourly/ - /etc/cron.monthly/ - /etc/cron.weekly

na mojej maszynie (centos 6.4) mam mlocate.cron w katalogu /etc/cron.daily/ i cron codziennie uruchamia ten skrypt.

więc myślę, że wystarczy dodać zadania crona.

Hudspeth
źródło
Ale jest plik crontab w /etc/crontab. Może pytanie brzmi: dlaczego tego crontab -lnie uznaje?
jl6
0

Rozwiązałem ten problem, zmieniając uprawnienia na /etc/crontabnastępujące:

-rw-r--r-- 1 root root 778 May 10 21:31 /etc/crontab

Wcześniej było -rw-rw-r--. To była jedyna zmiana. Teraz nie działało. Nadal nie jestem pewien, dlaczego.

jl6
źródło
1
Plik root crontab wykonywałby wszelkie polecenia jako root. Uprawnienia zezwalające na dostęp do zapisu do użytkownika innego niż root będą uważane za lukę bezpieczeństwa.
ChuckCottrill
@ChuckCottrill: Ale bit zapisu grupy dałby dostęp tylko do zapisu osobom z grupy głównej - co jest prawdopodobnie tylko użytkownikiem root?
jl6
0

Miałem również podobny typ problemu, ale po określeniu katalogu głównego jako użytkownik w /etc/crontab zadanie cron zaczęło się uruchamiać.

Może to wynikać z zastosowanej składni, crontab -ektóra różni się od /etc/crontab.

MohanBabu
źródło