Onde está o cron / crontab log?

Quero verificar se o meu trabalho de cronista está a ser executado e a que horas. Acredito que existe um registo para os meus trabalhos sudo crontab -e, mas onde?

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

Numa instalação padrão, os trabalhos cron são registados em

/var/log/syslog

Pode ver apenas trabalhos de cron nesse ficheiro de registo ao correr

 grep CRON /var/log/syslog

Se tiver'não reconfigurado nada, as entradas estarão lá dentro.

Comentários (12)

Pode criar um ficheiro cron.log para conter apenas as entradas CRON que aparecem no syslog. Note que os trabalhos CRON ainda aparecerão no syslog se seguir as seguintes instruções.

Abrir o ficheiro

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

Encontre a linha que começa com:

#cron.*

descomentar essa linha, guardar o ficheiro, e reiniciar o rsyslog:

sudo service rsyslog restart

Deve agora ver aqui um ficheiro de registo cronológico:

/var/log/cron.log

A actividade do Cron será agora registada neste ficheiro (para além do syslog).

Note que em cron.log verá entradas para quando o cron executou scripts em /etc/cron.hourly, cron.daily, etc. - por exemplo, algo do género:

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

Contudo, não verá mais informação sobre que scripts foram realmente executados dentro de /etc/cron.daily ou /etc/cron.hourly, a menos que esses scripts produzam directamente para o cron.log (ou talvez para algum outro ficheiro de log).

Se quiser verificar se uma crontab está a funcionar e não tem de a procurar em cron.log ou syslog, crie uma crontab que redireccione a saída para um ficheiro de registo da sua escolha - algo do género:

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

Isto irá redireccionar toda a saída padrão e erros que possam ser produzidos pelo script que é executado para o ficheiro de registo especificado.

Comentários (5)

Por vezes pode ser útil monitorizá-lo continuamente, nesse caso:

tail -f /var/log/syslog | grep CRON
Comentários (1)

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

 0 15 * * *    /home/andrew/daily-backup.sh >> /var/log/daily-backup.log 2>&1
Comentários (2)

Se você tiver o systemd instalado no seu sistema, você pode exibir o cron job log utilizando o comando `journalctl'.

Por exemplo, no meu Ubuntu 17.10:

journalctl -u cron.service
Comentários (0)

Esta é uma pergunta muito antiga, mas nenhuma destas respostas parece satisfatória.

Primeiro faça seu cron job correr a cada minuto, depois corra cron como não-daemon (temporariamente, apenas mate qualquer crond que possa já ter começado) com o registro de teste:

"crond -nx test".

E veja o registo da execução do seu programa a fluir através do seu terminal.

Comentários (1)

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

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

Este Q&A descreve o processo:

https://askubuntu.com/questions/966194/16-04-how-do-i-make-cron-create-cron-log-and-monitor-it-in-real-time/966195#966195

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

https://askubuntu.com/questions/949996/how-to-change-cron-log-level/

que mostra como alterar o nível de registo para incluir mais do que apenas o início dos trabalhos - o nível 15 mostrará também erros e o tempo final.

Comentários (0)

Fedoar 29 e RHEL 7

journalctl -t CROND

Do manual '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.
Comentários (0)

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

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

Erro e saída normal, ambos serão redireccionados para o mesmo ficheiro

Comentários (0)

Como mencionado anteriormente, os trabalhos cron são registrados em /var/log/syslog.

Você pode canalizar o syslog para grep e filtrar os registros CRON, como este

less /var/log/syslog | grep CRON 

Você pode pesquisar através de seus registros de crontab, como este

less /var/log/syslog | grep CRON | grep 

Você pode pesquisar através do seu histórico de crontab logs armazenados em arquivos gz, como este

less /var/log/syslog.2.gz | grep CRON | grep 

É sempre considerado bom ter um mecanismo de registro, você pode rapidamente configurar [ELK][1] para seus servidores, você também pode experimentar com [logz][2] .

[1]: https://www.elastic.co/elk-stack [2]: https://logz.io/

Comentários (0)