Cron executando o mesmo comando mais de uma vez
Dica publicada em Linux / Software
Cron executando o mesmo comando mais de uma vez
Olá!
Ambiente:
Recentemente notei algo anormal, já que o script me envia um relatório por email e os dados contidos não faziam sentido. É um script que já está em uso há 2 anos e a única diferença, era o servidor novo com um CentOS mais novo.
O que contribuiu com a minha suspeita sobre o código e/ou o Cron, embora estivesse funcionando sem problemas há poucos dias.
Alterei o horário da Cron para um horário próximo ao qual estava investigando e observei que o shell script estava sendo executado 3 vezes ao mesmo tempo e logo percebi que o crond, serviço responsável pelo Cron, também estava na mesma situação.
# ps aux | grep "crond"
Observei 3 linhas semelhantes às embaixo:
root 185365 0.0 0.0 116896 1312 ? Ss 15:19 0:00 crond
Apliquei o comando:
# service crond restart
E não surtiu enfeito, e não retornou nenhum erro ao executá-lo. Com isso, tive que matar todos os processos do crond com:
# pkill -9 crond
E para finalizar, subi o serviço novamente:
# service crond start
Espero ter contribuído.
Ambiente:
- CentOS 6
- cronie-1.4.4-12.el6.x86_64
- crontabs-1.10-33.el6.noarch
Introdução
Tenho um shell script agendado para rodar toda meia noite e meia, conforme descrito abaixo. O tempo médio de execução é em torno de 5 minutos.
30 0 * * * /bin/bash /root/scripts/meu_script.sh
Recentemente notei algo anormal, já que o script me envia um relatório por email e os dados contidos não faziam sentido. É um script que já está em uso há 2 anos e a única diferença, era o servidor novo com um CentOS mais novo.
O que contribuiu com a minha suspeita sobre o código e/ou o Cron, embora estivesse funcionando sem problemas há poucos dias.
Alterei o horário da Cron para um horário próximo ao qual estava investigando e observei que o shell script estava sendo executado 3 vezes ao mesmo tempo e logo percebi que o crond, serviço responsável pelo Cron, também estava na mesma situação.
Solução
Para identificar, analisei a saída do comando:# ps aux | grep "crond"
Observei 3 linhas semelhantes às embaixo:
root 185365 0.0 0.0 116896 1312 ? Ss 15:19 0:00 crond
Apliquei o comando:
# service crond restart
E não surtiu enfeito, e não retornou nenhum erro ao executá-lo. Com isso, tive que matar todos os processos do crond com:
# pkill -9 crond
E para finalizar, subi o serviço novamente:
# service crond start
Espero ter contribuído.