Dov'è il registro cron / crontab?


754

Voglio verificare che il mio lavoro cron sia in esecuzione e a che ora. Credo che ci sia un registro per i miei sudo crontab -elavori, ma dove?

Ho cercato su Google e ho trovato dei consigli per cercare /var/log(in cui non vedo nulla con "cron" nel nome) e per modificare il file /etc/syslog.confche anche io non ho.

Risposte:


898

Su un'installazione predefinita, i lavori cron vengono registrati

/var/log/syslog

È possibile visualizzare solo i processi cron in quel file di registro eseguendo

 grep CRON /var/log/syslog

Se non hai riconfigurato nulla, le voci saranno presenti.


46
Se non è installato MTA, cron semplicemente getta via l'output del lavoro.
Barry Kelly,

11
Il registro cron potrebbe trovarsi in un altro file nella /var/log/directory. Controlla cron.log o equivalente.
Navigatron

4
questo non mi dà output dal lavoro. dà solo un messaggio generico che il cron è stato elaborato.
Chovy

2
su AWS era / var / log / cron
tsukimi il

5
@shadi potresti anche grep -i CRONcercare senza distinzione tra maiuscole e minuscole
nafg

236

È possibile creare un file cron.log per contenere solo le voci CRON visualizzate in syslog. Si noti che i lavori CRON verranno comunque visualizzati in syslog se si seguono le seguenti indicazioni.

Apri il file

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

Trova la riga che inizia con:

#cron.*

decommenta quella riga, salva il file e riavvia rsyslog:

sudo service rsyslog restart

Ora dovresti vedere un file di registro cron qui:

/var/log/cron.log

L'attività Cron verrà ora registrata in questo file (oltre a syslog).

Nota che in cron.log vedrai le voci per quando cron eseguiva gli script in /etc/cron.hourly, cron.daily, ecc. - Ad esempio qualcosa come:

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

Tuttavia, non vedrai più informazioni su quali script sono stati effettivamente eseguiti all'interno di /etc/cron.daily o /etc/cron.hourly, a meno che quegli script non indirizzino l'output su cron.log (o forse su qualche altro file di registro).

Se si desidera verificare se un crontab è in esecuzione e non è necessario cercarlo in cron.log o syslog, creare un crontab che reindirizza l'output a un file di registro di propria scelta, ad esempio:

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

Ciò reindirizzerà tutto l'output standard e gli errori che possono essere generati dallo script eseguito sul file di registro specificato.


1
A mio avviso, questa risposta è migliore in futuro. Quindi il tuo file syslog è più chiaro.
shgnInc,

9
Per escludere anche il registro cron da syslog è possibile modificare la riga *.*;auth,authpriv.none -/var/log/syslogin *.*;auth,authpriv.none,cron.none -/var/log/syslog.
Koen.

Sul nostro CentOS 6, cron. * Definito in /etc/rsyslog.conf, mentre io sono vuoto nella cartella rsyslog.d.
Scott Chu,

che cosa significa 2>&1?
John Joe,

2
@JohnJoe 2> & 1 viene utilizzato per inoltrare stderr a stdout, in questo modo otterrai anche stderr nel file di registro.
Sampo Sarrala,

79

A volte può essere utile monitorarlo continuamente, in tal caso:

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

10
Bene, probabilmente vuoi usare -F, che seguirà il file attraverso le modifiche del nome, in modo che quando viene troncato / spostato, ad esempio /var/log/syslog.1.gz, stai ancora seguendo il /var/log/syslogfile corrente . Secondo i dottori, questo è lo stesso della corsatail xxxx -f --retry
Momer,

37

Puoi anche indirizzare l'output dei singoli cronjob nei loro registri per una migliore leggibilità, dovrai solo aggiungere l'output della data da qualche parte.

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

4
vero, ma se questa riga non viene eseguita a causa di un errore di sintassi, non verrà scritto nulla nel registro di output specificato.
Raptor,

11
È possibile risolvere questo problema aggiungendo 2> e 1 dopo aver specificato il file di registro. È inoltre consigliabile testare i cronjobs prima di aggiungerli al crontab e quindi essere presenti per la prima esecuzione pianificata per assicurarsi che il crontab sia formattato correttamente.
Andrew Meyer,

10

Se è stato systemdinstallato sul sistema, è possibile visualizzare il registro lavori cron utilizzando il journalctlcomando.

Ad esempio, sul mio Ubuntu 17.10:

journalctl -u cron.service

9

Questa è una domanda molto antica, ma nessuna di queste risposte sembra soddisfacente.

Prima fai eseguire il tuo processo cron ogni minuto, quindi esegui cron come non daemon (temporaneamente, basta uccidere qualsiasi crond che potrebbe essere già stato avviato) con la registrazione di prova:

crond -nx test

E vedere il registro dell'esecuzione del programma che scorre attraverso il tuo terminale.


7
Non funziona su 14.04 -No command 'crond' found, did you mean: Command 'cron' from package 'cron' (main)
G-.

8

È /var/log/syslogdi default.

Ma può essere impostato per creare un cron.log separato, che è più utile.

Queste domande e risposte descrivono il processo:

16.04: Come faccio a creare cron.log e monitorarlo in tempo reale?

Anche in questa risposta sono le istruzioni per creare un wcroncomando che lo visualizza è quasi in tempo reale. Inoltre, si collega a un'altra risposta,

Come modificare il livello del registro cron?

che mostra come modificare il livello di registro per includere più di un semplice inizio di lavori - il livello 15 mostrerà anche errori e ora di fine.


5

Fedoar 29 e RHEL 7

journalctl -t CROND

Dal journalctlmanuale:

   -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

È possibile reindirizzare l'output di cron su un file tmp

Come ad esempio: 00 11 07 * * / bin / bash /home/ubuntu/command.sh> / tmp / output 2> & 1

Errore e output normale, entrambi verranno reindirizzati allo stesso file


2

Come menzionato in precedenza, i lavori cron vengono registrati /var/log/syslog

È possibile reindirizzare il syslog a grep e filtrare i registri CRON, in questo modo

less /var/log/syslog | grep CRON 

Puoi cercare tra i tuoi log crontab, in questo modo

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

Puoi cercare tra i log della cronologia crontab memorizzati nei file gz, in questo modo

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

È sempre considerato buono avere un meccanismo di registrazione, puoi configurare rapidamente ELK per i tuoi server, puoi anche sperimentare logz .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.