
Lembro-me de brincar com o crontab e configurar recursos de e-mail em um servidor há muitos meses e agora, de repente, recebo o seguinte e-mail:
CABEÇALHO DO E-MAIL:
from: root <[email protected]>
to: root
date: Thu, Dec 5, 2013 at 6:48 AM
subject: Cron <root@server-ip> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
mailed-by: gmail.com
CORPO DO E-MAIL:
/etc/cron.daily/mlocate:
/usr/bin/updatedb.mlocate: `/var/lib/mlocate/mlocate.db' is locked (probably by an earlier updatedb)
run-parts: /etc/cron.daily/mlocate exited with return code 1
Isso está no Ubuntu Server 12.04.1 LTS. Eu nem sei qual servidor de e-mail estou usando ou como descobrir. Minha compreensão do /etc/cron.daily
diretório deve estar errada, porque quando o faço crontab -l
(tanto para o root quanto para o meu usuário normal), ele diz que não há crontab.
Talvez seja um problema updatedb
e não com email ou cron?
EDITAR: eliminei os processos /bin/bash /etc/cron.daily/mlocate
e /usr/bin/updatedb.mlocate
e removi o bloqueio, agora só terei que esperar para ver se recebo o erro novamente.
Responder1
- Realmente ajuda se você especificar em qual sistema operacional você está. Acho que isso é alguma distribuição Linux ...
- Ele está em execução
/etc/cron.daily/mlocate
e o script está com erro. Você provavelmente deveria consertar isso. - Não vejo nenhuma pergunta aí.
Responder2
Os pôsteres anteriores erraram completamente o alvo!
Em primeiro lugar, o autor da postagem original disse claramente qual sistema operacional ele está usando: Ubuntu Server 12.04.1 LTS
Em segundo lugar, ajuda a compreender os processos no nível do sistema em um sistema do tipo UNIX. As tabelas cron no nível do sistema são configuradas para executar processos de limpeza em horários programados regularmente. Como um cron job não possui um terminal conectado para enviar mensagens de erro, elas são enviadas por e-mail ao usuário do cron-tab – neste caso, o administrador do sistema.
Terceiro, você não deve simplesmente desligar o envio dessas mensagens por e-mail ou desligar o processamento dos cron jobs. Eles são uma indicação de que há um problema e que você precisa resolver a causa raiz.
No caso desta mensagem específica, eu também comecei a recebê-las após realizar uma atualização regular que envolvia mlocate. O processo ficou paralisado e não conseguiu terminar de aguardar a conclusão de uma operação de E/S. Dê uma olhada na tabela de processos:
$ ps -ef |grep mlocate
scott 14564 14416 0 19:49 pts/0 00:00:00 grep mlocate
root 16326 16113 0 Apr06 ? 00:00:00 /bin/bash /etc/cron.daily/mlocate
root 16332 16326 0 Apr06 ? 00:00:00 /usr/bin/updatedb.mlocate
A solução mais simples é simplesmente encerrar o(s) processo(s) envolvido(s) e deixar o próximo horário agendado do cron executá-lo novamente mais tarde.
$ sudo kill -9 16326 16332
Observe que isso irá gerar uma única nova mensagem cron, pois o processo travado é removido e o cron vê isso como um erro:
From: root@XXXXXXX (Cron Daemon)
To: root@XXXXXXX
Subject: Cron <root@XXXXXXX> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
Content-Type: text/plain; charset=ANSI_X3.4-1968
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <LOGNAME=root>
Date: Sun, 08 Apr 2014 19:54:36 -0400 (EDT)
run-parts: /etc/cron.daily/mlocate exited because of uncaught signal 9
Isso é uma indicação de que você esclareceu as coisas e agora a próxima instância deve funcionar normalmente.
Responder3
- problema no mlocate.
- mensagens são enviadas diretamente do servidor server-ip.
- go to
/var/spool/cron/
e dogrep -ir MAILTO
, a mesma verificação deMAILTO
entradas no/etc/crontab
arquivo. - se você não deseja receber mensagens do crond simplesmente remova a string MAILTO
- (provavelmente por uma atualização anteriorb) <- se você começou a receber mensagens hoje, dê ao mlocate mais algum tempo para terminar o trabalho no servidor.