Dove si trova il registro cron / crontab?

608

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

Ho cercato su Google e ho trovato consigli per cercare in /var/log (in cui non vedo nulla con 'cron' nel nome) e per modificare il file /etc/syslog.conf che anch'io non ho.

    
posta Scott Szretter 11.08.2011 - 14:06

7 risposte

715

In un'installazione predefinita i processi cron vengono registrati in

/var/log/syslog

Puoi vedere solo i lavori cron nel file di log eseguendo

 grep CRON /var/log/syslog

Se non hai riconfigurato nulla, le voci saranno lì.

    
risposta data Richard Holloway 12.08.2011 - 12:58
195

È possibile creare un file cron.log per contenere solo le voci CRON visualizzate in syslog. Nota che i lavori CRON continueranno a essere visualizzati in syslog se segui le seguenti istruzioni.

Apri il file

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

Trova la riga che inizia con:

#cron.*

decommenta tale riga, salva il file e riavvia rsyslog:

sudo service rsyslog restart

Ora dovresti vedere un file di registro di cron qui:

/var/log/cron.log

L'attività cron verrà ora registrata su questo file (oltre a syslog).

Nota che nel cron.log vedrai le voci relative a quando cron ha eseguito gli script in /etc/cron.hourly, cron.daily, ecc. - ad es. qualcosa come:

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

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

Se vuoi verificare se un crontab è in esecuzione e non devi cercarlo in cron.log o syslog, crea un crontab che reindirizza l'output a un file di log di tua scelta - qualcosa del tipo:

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

Questo reindirizzerà tutti gli output standard e gli errori che potrebbero essere generati dallo script eseguito nel file di log specificato.

    
risposta data user12345 13.04.2012 - 03:36
66

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

tail -f /var/log/syslog | grep CRON
    
risposta data KennyCason 14.05.2013 - 09:34
23

Puoi anche indirizzare l'output dei singoli cronjob ai propri log 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
    
risposta data Andrew Meyer 01.04.2015 - 17:26
6

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

Prima di tutto fai in modo che il tuo cron venga eseguito ogni minuto, quindi esegui cron come non-daemon (temporaneamente, uccidi solo qualsiasi crond che potrebbe essere già stato avviato) con la registrazione del test:

crond -nx test

E vedi il log dell'esecuzione del tuo programma che scorre attraverso il tuo terminale.

    
risposta data Tristan Maat 17.06.2016 - 19:42
5

È in /var/log/syslog per impostazione predefinita.

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

Questo Q & amp; A descrive il processo:

16.04: Come posso creare cron cron nel registro e monitorarlo in tempo reale?

Anche in questa risposta ci sono le istruzioni per creare un comando wcron che lo mostri sia quasi in tempo reale. Inoltre, si collega a un'altra risposta,

Come cambiare il livello del registro cron?

che mostra come modificare il livello del registro per includere più che l'inizio dei lavori - il livello 15 mostrerà anche gli errori e l'ora di fine.

    
risposta data SDsolar 22.10.2017 - 08:40
1

Potresti reindirizzare l'output di cron in un file tmp

Come: 00 11 07 * * / bin / bash /home/ubuntu/command.sh & gt; / tmp / output 2 & gt; & amp; 1

Errore e output normale, entrambi verranno reindirizzati allo stesso file

    
risposta data Himanshu 07.05.2018 - 13:27

Leggi altre domande sui tag