Onde está o log do cron / crontab?

622

Eu quero verificar se meu cron job está sendo executado e em que momento. Eu acredito que há um log para meus trabalhos sudo crontab -e , mas onde?

Eu procurei no google e encontrei recomendações para procurar em /var/log (no qual eu não vejo nada com 'cron' no nome) e para editar o arquivo /etc/syslog.conf que eu também não tenho.

    
por Scott Szretter 11.08.2011 / 14:06

7 respostas

735

Em uma instalação padrão, as tarefas agendadas são registradas em log

/var/log/syslog

Você pode ver apenas tarefas do cron nesse arquivo de log executando

 grep CRON /var/log/syslog

Se você não tiver reconfigurado nada, as entradas estarão lá.

    
por Richard Holloway 12.08.2011 / 12:58
202

Você pode criar um arquivo cron.log para conter apenas as entradas CRON que aparecem no syslog. Observe que os trabalhos CRON ainda serão exibidos no syslog se você seguir as instruções a seguir.

Abra o arquivo

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

Encontre a linha que começa com:

#cron.*

remova o comentário dessa linha, salve o arquivo e reinicie o rsyslog:

sudo service rsyslog restart

Agora você deve ver um arquivo de log do cron aqui:

/var/log/cron.log

A atividade Cron agora será registrada neste arquivo (além do syslog).

Note que no cron.log você verá entradas para quando o cron rodou scripts em /etc/cron.hourly, cron.daily, etc. algo como:

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

No entanto, você não verá mais informações sobre quais scripts foram realmente executados em /etc/cron.daily ou /etc/cron.hourly, a menos que esses scripts direcionem a saída para o cron.log (ou talvez para algum outro arquivo de log ).

Se você deseja verificar se um crontab está em execução e não precisa procurá-lo no cron.log ou no syslog, crie um crontab que redirecione a saída para um arquivo de log de sua escolha - algo como:

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

Isso redirecionará toda a saída padrão e os erros que podem ser produzidos pelo script que é executado no arquivo de log especificado.

    
por user12345 13.04.2012 / 03:36
68

Às vezes, pode ser útil monitorá-lo continuamente, nesse caso:

tail -f /var/log/syslog | grep CRON
    
por KennyCason 14.05.2013 / 09:34
24

Você também pode direcionar a saída dos cronjobs individuais para seus próprios logs para melhor legibilidade, você só precisará anexar a saída de data em algum lugar.

 0 15 * * *    /home/andrew/daily-backup.sh >> /var/log/daily-backup.log 2>&1
    
por Andrew Meyer 01.04.2015 / 17:26
7

Essa é uma pergunta muito antiga, mas nenhuma dessas respostas parece satisfatória.

Primeiro faça seu cron job rodar a cada minuto, então execute o cron como não-daemon (temporariamente, apenas mate qualquer crond que já tenha sido iniciado) com o log de teste:

crond -nx test

E veja o log da execução do seu programa fluindo pelo seu terminal.

    
por Tristan Maat 17.06.2016 / 19:42
6

Está em /var/log/syslog por padrão.

Mas pode ser configurado para criar um cron.log separado, o que é mais útil.

Este Q & amp; A descreve o processo:

16.04: Como faço o cron criar o cron.log e monitorá-lo em tempo real?

Também nesta resposta estão as instruções para criar um comando wcron que exibe quase em tempo real. Além disso, vincula a outra resposta,

Como alterar o nível de log do cron?

que mostra como alterar o nível de log para incluir mais do que apenas o início de tarefas - o nível 15 também mostrará erros e hora de término.

    
por SDsolar 22.10.2017 / 08:40
1

Você pode redirecionar a saída do cron para um arquivo tmp

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

Erro e saída normal, ambos serão redirecionados para o mesmo arquivo

    
por Himanshu 07.05.2018 / 13:27

Tags