Simple bash não rodando corretamente pelo cron

0

Eu criei um pequeno script que pega um arquivo usando o wget e o processa usando um php. O código é assim:

wget -U mozilla -P /home/logfetcher/ http://fakesite.com/log.'date -d 'yesterday' +%Y-%m-%d'.csv
wait    
/usr/bin/php csv-editor.php /home/logfetcher/log.'date -d 'yesterday' +%Y-%m-%d'.csv /home/logfetcher/sorted/log.'date -d 'yesterday' +%Y-%m-%d'.csv 3 9 7 0 2 1 5 11 12 13 && rm /home/logfetcher/*.csv

Eu testei e funciona sem nenhum problema, embora quando eu adicionei ao cron assim:

0 6 * * * /home/logfetcher/fetchlogs.sh

Faz o download do arquivo, mas o php parece não funcionar (nem o rm, o que eu acho que indica um erro ao tentar executar o arquivo php). Eu tenho tentado pensar sobre por que isso poderia estar falhando e tentei algumas coisas, mas não parece encontrar uma resposta adequada para consertá-lo. Qualquer ajuda seria apreciada!

    
por Daniel Sanchez 07.08.2015 / 11:02

2 respostas

1

O que o log do cron está dizendo? Ou syslog? Se houver erro na primeira parte do comando, o segundo comando (após & &) não será executado. é o script csv-editor.php no seu PATH? Se não for, você deve executá-lo com o caminho absoluto /x/y/my.script.

Tenho certeza de que o script não está em seu caminho, portanto, "/ usr / bin / php /x/y/script.php ...." deve resolver o problema.

Mas primeiro leia os registros ...

    
por 07.08.2015 / 11:09
1

Existem 2 soluções. Ou você adiciona #! /bin/bash como primeira linha em seu script ou inicia seu arquivo crontab com as duas linhas a seguir:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
    
por 07.08.2015 / 11:38

Tags