it-swarm-eu.dev

Kde je log cron / crontab?

Chci si ověřit, že moje práce cronu se provádí a kdy. Věřím, že existuje protokol pro mé Sudo crontab -e pracovních míst, ale kde?

Prohledal jsem google a našel doporučení, jak se podívat do /var/log (ve kterém nevidím nic s 'cron' v názvu) a editovat soubor /etc/syslog.conf které také nemám.

813
Scott Szretter

Při výchozí instalaci jsou úlohy cron přihlášeny

/var/log/syslog

Spuštěním tohoto souboru protokolu můžete vidět pouze úlohy cron

 grep CRON /var/log/syslog

Pokud jste nic nenakonfigurovali, budou záznamy tam.

967
Richard Holloway

Můžete vytvořit soubor cron.log, který bude obsahovat pouze položky CRON, které se zobrazí v syslogu. Všimněte si, že úlohy CRON se budou stále zobrazovat v syslogu, pokud budete postupovat podle následujících pokynů.

Otevřete soubor

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

Najděte řádek, který začíná:

#cron.*

odkomentujte tento řádek, uložte soubor a restartujte rsyslog:

Sudo service rsyslog restart

Nyní byste měli vidět soubor protokolu cron:

/var/log/cron.log

Cron aktivita bude nyní zaznamenána do tohoto souboru (kromě syslogu).

Všimněte si, že v cron.log uvidíte položky, kdy cron spouští skripty v /etc/cron.hourly, cron.daily atd. - např. něco jako:

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

Nebudete však vidět více informací o tom, jaké skripty byly ve skutečnosti spuštěny uvnitř /etc/cron.daily nebo /etc/cron.hourly, pokud tyto skripty přímo nevyjdou do cron.log (nebo možná do jiného souboru protokolu).

Pokud chcete ověřit, zda je crontab spuštěný a nemusíte ho hledat v cron.log nebo syslog, vytvořte crontab, který přesměruje výstup do souboru protokolu podle vašeho výběru - například:

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

Tím se přesměrují všechny standardní výstupy a chyby, které mohou být způsobeny skriptem, který je spuštěn, do zadaného souboru protokolu.

260
user12345

Někdy může být užitečné jej průběžně sledovat, v tom případě:

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

Můžete také přesměrovat výstup jednotlivých cronjobů do jejich vlastních protokolů pro lepší čitelnost, stačí někde připojit výstup data.

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

Pokud máte v systému nainstalován systemd, můžete zobrazit protokol úlohy cron pomocí příkazu journalctl.

Například na mém Ubuntu 17.10:

journalctl -u cron.service
18
an9wer

Je to velmi stará otázka, ale žádná z těchto odpovědí se nezdá být uspokojivá.

Nejprve nechte svou cronovou úlohu běžet každou minutu, poté spusťte cron jako nedémon (dočasně zabijte jakýkoli crond, který už mohl začít) pomocí protokolování testu:

crond -nx test

A podívejte se na protokol provádění programu, který protéká vaším terminálem.

10
Tristan Maat

To je v /var/log/syslog ve výchozím stavu.

Lze ji však vytvořit tak, že vytvoří samostatný cron.log, což je užitečnější.

Tato Q&A popisuje proces:

16.04: Jak vytvořím cron, aby vytvořil cron.log a sledoval jej v reálném čase?

V této odpovědi jsou také pokyny k vytvoření příkazu wcron, který zobrazuje, že je téměř v reálném čase. Plus, odkazuje na jinou odpověď,

Jak změnit úroveň logu cron?

to ukazuje, jak změnit úroveň protokolu tak, aby zahrnovala více než jen začátek úlohy - úroveň 15 bude zobrazovat chyby a čas ukončení.

8
SDsolar

Fedora 29 a RHEL 7

journalctl -t CROND

Z manuálu journalctl:

   -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.
7
HarlemSquirrel

Jak bylo uvedeno výše, úlohy cron se přihlásí k /var/log/syslog

Můžete syslog poslat potrubím, aby seskočil a odfiltroval protokoly CRON, jako je tento

less /var/log/syslog | grep CRON 

Takto můžete procházet protokoly crontab

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

Můžete procházet protokoly historie crontabu uložené v souborech gz, jako je tento

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

Je vždy dobré mít mechanismus protokolování, můžete rychle nastavit ELK pro vaše servery, můžete také experimentovat s logz .

4
zero

Mohli byste přesměrovat výstup cronu do souboru tmp

Například: 00 11 07 * */bin/bash/home/ubuntu/command.sh>/tmp/output 2> & 1

Chyba a normální výstup, oba budou přesměrovány do stejného souboru

3
Himanshu