単純なbashはcronを介して正しく実行できません

単純なbashはcronを介して正しく実行できません

wgetを使用してファイルをインポートし、php.iniを使用して処理する小さなbashスクリプトを作成しました。コードは以下のように表示されます。

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

私はテストしましたが、問題なく動作しますが、cronに次のように追加すると次のようになります。

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

ファイルをダウンロードしてもPHPがまったく機能しないようです(rmも機能しません。これはPHPファイルの実行中にエラーが発生したようです)。なぜ失敗するのか考えていくつかの試みをしてみましたが、直すための正解が見つからないようです。どんな助けでも大変感謝します!

答え1

クローンログは何を言いますか?またはシステムログ?コマンドの最初の部分にエラーがある場合、2番目のコマンド(&&の後)は実行されません。 csv-editor.phpスクリプトはパスにありますか?それ以外の場合は、絶対パス/x/y/my.scriptを使用して実行する必要があります。

私はスクリプトがあなたのパスにないと確信しているので、 "/usr/bin/php /x/y/script.php...."はそのトリックを実行する必要があります。

しかし、まずログを読んでください...

答え2

2つの解決策があります。これを#! /bin/bashスクリプトの最初の行として追加するか、次の2行でcrontabファイルを起動できます。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin

関連情報