Crontab repete a cada 15 min

1

Meu cronjob está sendo repetido a cada 15 minutos e não tenho idéia do motivo.

Aqui está o arquivo crontab com comandos reais substituídos:

# m h  dom mon dow   command
# Comment
0 9 * * * command arg1
0 14 * * * command arg1
0 19 * * * command arg1
0 1 * * * command arg1
#0 19 * * * command arg1
#0 22 * * * command arg1

Eu modifiquei o crontab e reiniciei o servidor. Tudo começou como esperado. Mas continuava repetindo o comando a cada 15 min. Meu comando é um script sh que usa o wget para iniciar o serviço da web.

Tenho a sensação de que o crontab repete o comando com falha após 15 minutos (o wget falha na maior parte do tempo porque o serviço da Web requer mais de 1 minuto para ser executado). Estou certo? E como isso pode ser corrigido?

    
por Sergej Andrejev 20.02.2010 / 14:07

3 respostas

4

o cron não tenta tarefas novamente. Ele simplesmente executa comandos em um cronograma. Ele não se importa necessariamente se tiver sucesso ou falhar. O cron também não impõe nenhum tipo de tempo limite.

Você pode querer verificar seu syslog e / var / log / cron (pelo menos é onde ele está nos sistemas no estilo RedHat).

Além disso, se o usuário proprietário do crontab não estiver recebendo mensagens de e-mail referentes à saída do comando wget, insira um [email protected] para obter uma imagem melhor do que está acontecendo quando o comando é sendo executado.

Veja:

man 5 crontab

... para mais detalhes sobre algumas das outras configurações que podem ser configuradas para o crontab do usuário.

Da página de manual do WGET

When interacting with the network, Wget can check for timeout and abort the operation if it takes too long. This prevents anomalies like hanging reads and infinite connects. The only timeout enabled by default is a 900-second read timeout. Setting a timeout to 0 disables it altogether. Unless you know what you are doing, it is best not to change the default timeout settings.

    
por 20.02.2010 / 14:38
1

Eu sou preguiçoso, então apenas duas respostas rápidas.

O primeiro é procurar em / etc / cron * para ver se há alguma coisa interessante que possa responder sua pergunta.

O segundo é olhar para o ps aux para ver se há algum processo que você não conhece e talvez esteja lá para lançar seu script a cada 15 minutos.

Então, de graça um terceiro, você pode modificar seu script para dizer (log) de quem é lançado, talvez adicionando no início algo como ps aux | grep $ PPID > /tmp/your_script_parent_process.log.

Eu estava perdoando. Poderia haver outra resposta, talvez o comando seja executado por meio do crontab de outro usuário.

Andrea

    
por 20.02.2010 / 14:30
1

Descobri que, por padrão, o wget repete a solicitação quando ela falha. Adicionando "-t 1" ou "--times = 1" resolveu o problema

    
por 21.02.2010 / 02:00

Tags