Questão Onde está o log do cron / crontab?


Quero verificar se meu trabalho cron está sendo executado e em que momento. Eu acredito que há um log para o meu sudo crontab -e empregos, mas onde?

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


613
2017-08-11 12:06


origem




Respostas:


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


722
2017-08-12 10:58



Se não houver nenhum MTA instalado, o cron simplesmente lançará a saída da tarefa. - Barry Kelly
O log do cron pode estar em outro arquivo no /var/log/ diretório. Verifique se há cron.log ou equivalente. - Navigatron
isso não me dá saída do trabalho. apenas dá uma mensagem genérica que o cron foi processado. - chovy
na AWS foi / var / log / cron - tsukimi
@shadi você também poderia grep -i CRON pesquisar sem distinção entre maiúsculas e minúsculas - nafg


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

descomente essa 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.


197
2018-04-13 01:36



Com minha opinião, esta resposta é melhor no futuro. Então, o seu arquivo syslog é mais claro. - shgnInc
Para excluir também o log cron do syslog, você pode alterar a linha *.*;auth,authpriv.none -/var/log/syslog para *.*;auth,authpriv.none,cron.none -/var/log/syslog. - Koen.
No nosso CentOS 6, cron. * Definido em /etc/rsyslog.conf, enquanto eu estou vazio na pasta rsyslog.d. - Scott Chu
o que é 2>&1 significa ? - John Joe
@JohnJoe 2> & 1 é usado para encaminhar stderr para stdout, dessa forma você também obterá stderr para o arquivo de log. - Sampo Sarrala


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

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

67
2018-05-14 07:34



Bem, você provavelmente quer usar -F, que seguirá o arquivo nas alterações de nome, de modo que, quando ele for truncado / movido para, por exemplo, /var/log/syslog.1.gz, você ainda está seguindo a corrente /var/log/syslog Arquivo. Por o homem docs, isso é o mesmo que correr tail xxxx -f --retry - Momer


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

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

24
2018-04-01 15:26



true, mas se esta linha não for executada devido a um erro de sintaxe, nada será gravado no log de saída especificado. - Raptor
Você pode resolver isso anexando 2> & 1 após o arquivo de log ser especificado. Também é uma boa prática testar seus cronjobs antes de adicioná-los ao crontab e, em seguida, estar presente para a primeira execução agendada para garantir que o crontab esteja formatado corretamente. - Andrew Meyer


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

Primeiro faça seu cron funcionar 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.


7
2018-06-17 17:42



Não funciona em 14.04 - No command 'crond' found, did you mean: Command 'cron' from package 'cron' (main) - G-.


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

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

Esta sessão de perguntas e respostas 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 wcron comando 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.


5
2017-10-22 06:40





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

Tal 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


1
2018-05-07 11:27