cronjob não está sendo executado

1
 MAILTO="jnylund@***"
 0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/myapp/current/script/fetch_emails.sh
 0 3 * * * /home/myapp/current/script/send_insurance_reminders.sh

Oi, o primeiro trabalho é executado a cada 5 minutos, o outro não parece estar sendo executado (não há arquivo de log, nenhum erro de e-mail, nada). Eu tenho que estar fazendo algo idiota ... alguma idéia? Corre bem na linha de comando.

Aqui está o script de shell:

 cd /home/myapp/current;rake send_insurance_reminders RAILS_ENV=production >> /home/myapp/current/log/insurance_reminders.log

O arquivo de log não foi atualizado desde a última vez que executei manualmente

    
por Joelio 11.08.2011 / 21:44

7 respostas

1

Que tal mudar a linha do cron para:

 0 3 * * * /bin/bash /home/myapp/current/script/send_insurance_reminders.sh
    
por 11.08.2011 / 23:23
0

Você está esperando até 3:00 para que seja executado, certo?

Em caso afirmativo, isso depende de uma variável de ambiente definida em seu shell de login?

    
por 11.08.2011 / 21:51
0

O script de shell tem as permissões Ler e Executar adequadas?

    
por 11.08.2011 / 22:09
0

Cron irá ignorar uma entrada sem uma nova linha - verifique novamente se você tem uma nova linha (ou duas!) após a última entrada.

    
por 12.08.2011 / 00:02
0

Como você editou o arquivo crontab?

Dependendo da sua implementação do cron, pode não estar selecionando mudanças no arquivo crontab se você editá-lo diretamente. Se este for o caso, edite o arquivo crontab com o comando crontab -e ou informe o processo cron sobre as mudanças (veja a página de manual da sua implementação do cron sobre como fazer isso).

Muitas implementações cron modernas notam mudanças automaticamente. Esta pode não ser a solução correta no seu caso, mas é uma possibilidade e eu não a vi mencionada ainda.

    
por 12.08.2011 / 02:27
0

Para ajudar no diagnóstico, você pode adicionar logger declarações ao início e ao fim do seu cron para que as mensagens sejam enviadas para o syslog:

logger -t fetchmail Mail Fetch Started; /home/myapp/current/script/fetch_emails.sh && logger -t fetchmail Mail Fetch Completed

O motivo pelo qual você deseja um "& &" antes da mensagem final é para que, se o seu script não for executado, ele nunca enviará a mensagem completa para o syslog.

Eu pessoalmente gosto de usar tags ( -t ) para facilitar o seu syslog.

    
por 12.08.2011 / 04:25
0

Você não disse explicitamente que seu script funciona. Supondo que isso aconteça, certifique-se de que o cron está sendo executado como você. Se não estiver, certifique-se de que o usuário que está executando o cron tenha permissões de execução para o script.

Ao solucionar problemas, eu também gosto de su para esse usuário (geralmente usando su - username ) e executar o script manualmente.

    
por 12.08.2011 / 04:29

Tags