A configuração
Eu tenho um script /etc/cron.hourly/msm-hourly
que contém isso:
#!/bin/sh
LOGPATH='/opt/msm/servers/cronscripts'
LOGFILE="$LOGPATH/msm-start.log"
# Make restart dead servers
echo "" >> $LOGFILE && /bin/date >> $LOGFILE && /etc/init.d/msm start >> $LOGFILE
Toda hora:
- Crie uma nova linha no arquivo de log
- Adicione a data
- Então a saída do
msm start
comando
Funcionaexecutando a partir da linha de comandoassim comodentro de/etc/cron.daily/
O problema
A saída, quando executada a partir da linha de comando, é semelhante a esta:
[ msm-hourly.log ]
Thu Sep 12 20:56:51 UTC 2013
[ACTIVE] Server already started.
No entanto, depois de deixá-lo rodar por um tempo, a saída em cada iteração fica assim:
[ msm-hourly.log ]
Thu Sep 12 20:56:51 UTC 2013
[ACTIVE] Server already started.
Thu Sep 12 21:01:02 UTC 2013
Thu Sep 12 21:01:02 UTC 2013
Thu Sep 12 21:01:02 UTC 2013
Thu Sep 12 21:01:02 UTC 2013
Thu Sep 12 21:01:02 UTC 2013
Thu Sep 12 21:01:02 UTC 2013
[ACTIVE] Server already started.
[ACTIVE] Server already started.
[ACTIVE] Server already started.
[ACTIVE] Server already started.
[ACTIVE] Server already started.
[ACTIVE] Server already started.
Aqui está a saída de /var/logs/cron
:
Sep 12 21:01:02 server run-parts(/etc/cron.hourly)[19497]: starting msm-hourly
Sep 12 21:01:02 server run-parts(/etc/cron.hourly)[19498]: starting msm-hourly
Sep 12 21:01:02 server run-parts(/etc/cron.hourly)[19522]: starting msm-hourly
Sep 12 21:01:02 server run-parts(/etc/cron.hourly)[19541]: starting msm-hourly
Sep 12 21:01:02 server run-parts(/etc/cron.hourly)[19549]: starting msm-hourly
Sep 12 21:01:02 server run-parts(/etc/cron.hourly)[19565]: starting msm-hourly
Sep 12 21:01:03 server run-parts(/etc/cron.hourly)[20166]: finished msm-hourly
Sep 12 21:01:03 server run-parts(/etc/cron.hourly)[20182]: finished msm-hourly
Sep 12 21:01:03 server run-parts(/etc/cron.hourly)[20243]: finished msm-hourly
Sep 12 21:01:03 server run-parts(/etc/cron.hourly)[20288]: finished msm-hourly
Sep 12 21:01:04 server run-parts(/etc/cron.hourly)[20310]: finished msm-hourly
Sep 12 21:01:04 server run-parts(/etc/cron.hourly)[20315]: finished msm-hourly
Pergunta
Tentei substituir e retrabalhar o script seguido por /etc/init.d/crond reload
e/ou /etc/init.d/crond restart
.
As coisas reiniciam sem erros e o script é acionado a cada hora como deveria... apenas com todas as linhas extras.
Como faço para rastrear isso para entender melhor o que está acontecendo e corrigi-lo para que o msm-hourly seja executado apenas uma vez por hora?
Responder1
Verifique /etc/crontab
se a linha for cron.hourly
é semelhante à abaixo (prestando atenção especial que apenas o campo dos minutos possui um número e o restante são asteriscos) e aparece apenas uma vez.
17 * * * * root cd / && run-parts --report /etc/cron.hourly
Além disso, certifique-se de que seu script (ou /etc/cron.hourly) não seja inserido em nenhum outro crontabs, incluindo o de um usuário (ou root) e que múltiplas cópias (backups) não apareçam em arquivos /etc/cron.hourly
.
Observe que a última linha do seu script pode ser simplificada para:
{ echo && /bin/date && /etc/init.d/msm start; } >> $LOGFILE
Por favor veja tambémGerenciamento de processos.