Gdzie jest dziennik cron / crontab?


753

Chcę sprawdzić, czy moje zadanie cron jest wykonywane io której godzinie. Wydaje mi się, że istnieje dziennik moich sudo crontab -ezadań, ale gdzie?

Przeszukałem google i znalazłem rekomendacje do zajrzenia /var/log(w których nie widzę nic z „cron” w nazwie) i do edycji pliku, /etc/syslog.confktórego również nie mam.

Odpowiedzi:


894

Podczas instalacji domyślnej zadania cron są logowane

/var/log/syslog

Po uruchomieniu możesz zobaczyć tylko zadania cron w tym pliku dziennika

 grep CRON /var/log/syslog

Jeśli niczego nie zmieniłeś, wpisy będą tam.


46
Jeśli nie ma zainstalowanego MTA, cron po prostu wyrzuca wyniki zadania.
Barry Kelly,

11
Dziennik cron może znajdować się w innym pliku w /var/log/katalogu. Sprawdź plik cron.log lub równoważny.
Navigatron

4
to nie daje mi wyników pracy. po prostu daje ogólny komunikat, że cron został przetworzony.
chovy,

2
na AWS był / var / log / cron
tsukimi

5
@shadi można również grep -i CRONwyszukiwać bez rozróżniania wielkości liter
nafg

236

Możesz utworzyć plik cron.log zawierający tylko wpisy CRON, które pojawiają się w syslog. Pamiętaj, że zadania CRON nadal będą się wyświetlać w syslog, jeśli postępujesz zgodnie z poniższymi wskazówkami.

Otwórz plik

/etc/rsyslog.d/50-default.conf

Znajdź linię zaczynającą się od:

#cron.*

usuń komentarz z tej linii, zapisz plik i uruchom ponownie rsyslog:

sudo service rsyslog restart

Powinieneś teraz zobaczyć tutaj plik dziennika cron:

/var/log/cron.log

Aktywność Crona będzie teraz rejestrowana w tym pliku (oprócz syslog).

Zauważ, że w cron.log zobaczysz wpisy, kiedy cron uruchomił skrypty w /etc/cron.hourly, cron.daily itp. - np. Coś takiego:

Apr 12 14:17:01 cd CRON[14368]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

Jednak nie zobaczysz więcej informacji o tym, jakie skrypty zostały uruchomione w /etc/cron.daily lub /etc/cron.hourly, chyba że skrypty te kierują dane wyjściowe do pliku cron.log (lub może do innego pliku dziennika).

Jeśli chcesz sprawdzić, czy plik crontab jest uruchomiony i nie musisz go wyszukiwać w pliku cron.log lub syslog, utwórz plik crontab, który przekierowuje dane wyjściowe do wybranego pliku dziennika - coś takiego:

01 14 * * * /home/joe/myscript >> /home/log/myscript.log 2>&1

Spowoduje to przekierowanie wszystkich standardowych danych wyjściowych i błędów, które mogą zostać wywołane przez skrypt uruchamiany do określonego pliku dziennika.


1
Moim zdaniem ta odpowiedź jest lepsza w przyszłości. Twój plik syslog jest więc bardziej przejrzysty.
shgnInc,

9
Aby również wykluczyć dziennik cron z syslog, możesz zmienić linię *.*;auth,authpriv.none -/var/log/syslogna *.*;auth,authpriv.none,cron.none -/var/log/syslog.
Koen.

Na naszym CentOS 6, cron. * Zdefiniowany w /etc/rsyslog.conf, podczas gdy ja jest pusty w folderze rsyslog.d.
Scott Chu

co to jest 2>&1skrót?
John Joe

2
@JohnJoe 2> & 1 służy do przekazywania stderr do stdout, w ten sposób otrzymasz także stderr do pliku dziennika.
Sampo Sarrala,

79

Czasami przydatne może być ciągłe monitorowanie, w takim przypadku:

tail -f /var/log/syslog | grep CRON

10
Cóż, prawdopodobnie chcesz użyć -F, który będzie śledził plik w trakcie zmian nazw, aby po przycięciu / przeniesieniu do, np. /var/log/syslog.1.gzNadal śledziłeś bieżący /var/log/syslogplik. Według tail xxxx -f --retry
doktryny

37

Możesz również skierować dane wyjściowe poszczególnych cronjobs do ich własnych dzienników, aby uzyskać lepszą czytelność, wystarczy gdzieś dołączyć wynik daty.

 0 15 * * *    /home/andrew/daily-backup.sh >> /var/log/daily-backup.log 2>&1

4
prawda, ale jeśli ten wiersz nie uruchomi się z powodu błędu składniowego, nic nie zostanie zapisane w określonym dzienniku wyjściowym.
Raptor,

11
Możesz rozwiązać ten problem, dodając 2> i 1 po określeniu pliku dziennika. Najlepszą praktyką jest również przetestowanie cronjobs przed dodaniem ich do crontab, a następnie obecność przy pierwszym zaplanowanym uruchomieniu, aby upewnić się, że crontab jest poprawnie sformatowany.
Andrew Meyer,

10

Jeśli systemdzainstalowałeś w swoim systemie, możesz wyświetlić dziennik zadań cron za pomocą journalctlpolecenia.

Na przykład na moim Ubuntu 17.10:

journalctl -u cron.service

9

To bardzo stare pytanie, ale żadna z tych odpowiedzi nie wydaje się zadowalająca.

Najpierw uruchamiaj zadanie crona co minutę, a następnie uruchamiaj crona jako nie-demon (tymczasowo, po prostu zabij każdy crond, który mógł już się uruchomić) przy logowaniu testowym:

crond -nx test

I zobacz dziennik wykonania programu przepływającego przez twój terminal.


7
Nie działa w dniu 14.04 -No command 'crond' found, did you mean: Command 'cron' from package 'cron' (main)
G-.

8

Jest /var/log/syslogdomyślnie włączony.

Ale można go skonfigurować, aby utworzyć osobny plik cron.log, co jest bardziej przydatne.

Niniejsze pytania i odpowiedzi opisują proces:

16.04: Jak sprawić, aby cron utworzył cron.log i monitorował go w czasie rzeczywistym?

Również w tej odpowiedzi znajdują się instrukcje tworzenia wcronpolecenia, które wyświetla je prawie w czasie rzeczywistym. Ponadto łączy się z inną odpowiedzią,

Jak zmienić poziom dziennika cron?

pokazuje, jak zmienić poziom dziennika, aby obejmował coś więcej niż tylko rozpoczęcie zadań - poziom 15 pokaże również błędy i czas zakończenia.


5

Fedoar 29 i RHEL 7

journalctl -t CROND

Z journalctlinstrukcji:

   -t, --identifier=SYSLOG_IDENTIFIER|PATTERN
       Show messages for the specified syslog identifier SYSLOG_IDENTIFIER, or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.

       This parameter can be specified multiple times.

3

Możesz przekierować wyjście crona do pliku tmp

Takich jak: 00 11 07 * * / bin / bash /home/ubuntu/command.sh> / tmp / output 2> & 1

Błąd i normalne wyjście, oba zostaną przekierowane do tego samego pliku


2

Jak wspomniano wcześniej, zadania cron są logowane do /var/log/syslog

Możesz przesłać syslog do grep i odfiltrować dzienniki CRON, w ten sposób

less /var/log/syslog | grep CRON 

Możesz przeszukiwać swoje dzienniki crontab, w ten sposób

less /var/log/syslog | grep CRON | grep <search-keyword-comes-here>

Możesz przeszukiwać dzienniki historii crontab przechowywane w plikach gz, tak jak to

less /var/log/syslog.2.gz | grep CRON | grep <search-keyword-comes-here>

Zawsze dobrze jest mieć mechanizm rejestrowania, możesz szybko skonfigurować ELK dla swoich serwerów, możesz także eksperymentować z logz .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.