crontab não iniciando um script

1

Eu tenho problema com o meu crontab - cron não está lançando um dos meus scripts

esta é a parte superior do meu crontab (root)

SHELL=/bin/bash

#---------------------------------------
# Items availability
#---------------------------------------


# Daily offer import + daily sync everything
30 7 * * *      /var/www/import/download_offers.sh > /var/logs/download_offers_cron.log

# Updates availability
# 7:45 mass update happens
*/5 0-6 * * *   /var/www/import/check_availability.sh
0,5,10,15,20,25 7 * * * /var/www/import/check_availability.sh
*/5 8-23 * * * /var/www/import/check_availability.sh

#---------------------------------------
# Sales import + sync
#---------------------------------------

# Import EBAY + WWW sales. Run sales cleaner
*/15 * * * *    /var/www/import/import_all.sh
*/5 * * * *     /var/www/import/import_www.sh
55 13 * * *     /var/www/import/import_all.sh
58 13 * * *     /var/www/import/import_www.sh

... more stuff 7KB total ...

costumava funcionar perfeitamente por muito tempo, mas depois da semana passada reinicie esta linha

30 7 * * *      /var/www/import/download_offers.sh > /var/log/download_offers_cron.log

parou de funcionar. conteúdo de download_offers.sh:

#!/bin/sh

echo "Working..."

echo "Download offers started" > /var/log/import/OFFER_START.log

... some private stuff ; just bunch of wget's and echo's ...

arquivo /var/log/import/OFFER_START.log não é criado

o que tentei até agora

  • eu mudei a hora para 7:30, 8:00 (costumava ser 7:45 originaly)
  • Eu adicionei > /var/logs/download_offers_cron.log mas o arquivo não foi criado
  • Eu naveguei por e-mails de raiz, todos os scripts são iniciados, exceto aquele
  • o arquivo é + x executável

existe algum bug conhecido? existe alguma outra opção para depurar crontab exceto mails? Por que o script não é iniciado? costumava funcionar bem depois da reinicialização da semana passada ...

Por favor, ajude-me a perder a cabeça

Editar:

Estou usando o lançamento do CentOS 6.6 (Final)

isto é / var / log / cron

Mar 10 07:30:01 serverpro1 CROND[11291]: (root) CMD (/var/www/import/download_offers.sh > /var/logs/download_offers_cron.log)

parece que a entrada do cron está bem, mas não existe /var/log/download_offers_cron.log de qualquer forma?

    
por Peter 10.03.2015 / 12:34

4 respostas

1

magicamente funciona novamente

A única coisa que eu mudei foi

30 7 * * *      /var/www/import/download_offers.sh > /var/logs/download_offers_cron.log
                                                             ^^ here

para

30 7 * * *      /var/www/import/download_offers.sh > /var/log/download_offers_cron.log
                                                             ^^ here

por que causou erro e o script não funcionou? Eu não sei

e por que o script parou de funcionar em primeiro lugar é mistério não resolvido

    
por 17.03.2015 / 10:13
0

Verifique o que seu arquivo / var / log / syslog diz sobre o cron job. Grep a palavra "cron" dos logs e verifique qual é o erro. Use o comando abaixo para verificar o mesmo.

grep -i cron / var / log / syslog

Caso contrário, tudo que você mencionou é bom.

    
por 10.03.2015 / 12:48
0

Seu crontab diz para usar o bash, mas quando você executa o script, você realmente descarta novamente para o shell 'sh', assim você perde todas as suas variáveis de ambiente. Acabei de ter esse problema na semana passada. Meu problema era que eu não tinha nenhuma variável de caminho quando o script era executado no cron, mas o script funcionava bem quando eu o executava manualmente.

Você pode testar isso fazendo isso no topo do seu script, depois do #! / bin / sh:

echo $PATH
echo $path
sleep 10

no seu script quando ele é executado pelo cron. Eu não consigo lembrar qual caminho é usado por 'sh', então faça eco de ambos.

Talvez você não seja "sh" no seu script?

Ou, para cada utilitário executado, insira o caminho completo para o utilitário, cada entrada e cada arquivo de saída.

Então, se o seu script diz:

wget ...

Você o substituiria pelo caminho completo:

/usr/bin/wget ...

ou qualquer que seja o caminho correto.

(Ainda não posso adicionar comentários, por isso não poderei responder aos comentários. Lamentamos.)

    
por 16.03.2015 / 16:39
0

Parece ser um erro de digitação.
No primeiro script você usa /var/log , mas no novo é /var/logs . Log é o diretório padrão, mas você parece usar log s

    
por 21.03.2015 / 08:03

Tags