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