Como descubro por que o cron não está executando meus trabalhos?

15

Estou usando o Ubuntu 14.04 e o cron daemon está em execução:

# ps ax | grep cron
822 ?        Ss     0:00 cron

mas não está executando nenhum trabalho. Eu estava recebendo entradas anteriormente /var/log/syslogcomo esta:

2014-05-04T11:47:01.839754+01:00 localhost CRON[29253]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ))

mas agora não há entradas relacionadas ao cron. Eu também estava recebendo entradas como esta em /var/log/auth.log:

2014-05-04T11:47:01.839183+01:00 localhost CRON[29252]: pam_unix(cron:session): session opened for user root by (uid=0)
2014-05-04T11:47:13.495691+01:00 localhost CRON[29252]: pam_unix(cron:session): session closed for user root

mas, novamente, agora não há entradas relacionadas ao cron.

Não sei que tudo mudou. Eu tentei reiniciar o cron:

# service cron restart
cron stop/waiting
cron start/running, process 24907

Eu tentei usar crontab -epara adicionar um trabalho cron * * * * * date >> /tmp/somefileque funcionou, mas ele instalou um novo crontab /var/spool/cron/crontabs/root, enquanto eu quero que o cron use o arquivo /etc/crontab.

Existe alguma opção de depuração que eu possa usar ou um log em algum lugar que possa fornecer uma mensagem de erro que eu possa investigar?

jl6
fonte
1
O que foi exibido no crontab -l?
User345352353
no crontab for root.
jl6
Acredito que, se você pesquisar um pouco mais neste site do SE, terá uma resposta. Este é um problema bastante comum.
Mdpc
Crons recuperados usando o crontabcomando ( -lswitch) dependem do usuário, enquanto /etc/crontabsão usados ​​para armazenar crons em todo o sistema. Por esse motivo, as tarefas salvas em /etc/crontabnão aparecerão nas de ninguém crontab -l.
John WH Smith

Respostas:

4

Para ajudá-lo ainda mais a depurar o que está errado com seus crontrabalhos, verifique seu e-mail. Isso geralmente é armazenado em um arquivo como /var/mail/<user_name>ou /var/spool/mail/<user_name>.

Esses dois arquivos são realmente hardlinks na minha caixa Debian, mas não sei se isso é padrão.

Explicação

De cron(8) página:

Ao executar comandos, qualquer saída é enviada para o proprietário do crontab (ou para o usuário nomeado na variável de ambiente MAILTO no crontab, se houver).

Joseph R.
fonte
Eu verifiquei o correio; nenhum está sendo gerado nem existe um arquivo dead.letter.
jl6
0

Você mostrou que não há crontab para root, algum usuário tem uma entrada crontab? Se você estiver usando apenas o root, também poderá verificar os seguintes diretórios: /etc/cron.daily/ - /etc/cron.hourly/ - /etc/cron.monthly/ - /etc/cron.weekly

na minha máquina (centos 6.4) tenho mlocate.cron dentro do diretório /etc/cron.daily/ e o cron executa esse script diariamente.

então eu acho que você só precisa adicionar trabalhos cron.

Hudspeth
fonte
Mas há um arquivo crontab no /etc/crontab. Talvez a pergunta seja por que crontab -lnão reconhece isso?
jl6
0

Eu resolvi isso alterando as permissões /etc/crontabpara o seguinte:

-rw-r--r-- 1 root root 778 May 10 21:31 /etc/crontab

Anteriormente era -rw-rw-r--. Essa foi a única mudança. Não estava funcionando, agora está. Ainda não sei por quê.

jl6
fonte
1
O root crontab executaria qualquer comando como root. Permissões que permitem acesso de gravação a não raiz seriam consideradas uma falha de segurança.
ChuckCottrill
@ChuckCottrill: Mas o bit de gravação do grupo só teria acesso de gravação àqueles no grupo raiz - o que presumivelmente é apenas usuário (s) raiz (s)?
jl6
0

Eu também tive um tipo semelhante de problema, mas depois de especificar a raiz como usuário no /etc/crontab , o trabalho cron começou a ser acionado.

Pode ser devido à sintaxe seguida na crontab -eque é diferente da /etc/crontab.

MohanBabu
fonte