간단한 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

크론 로그는 무엇을 말합니까? 아니면 시스템 로그? 명령의 첫 번째 부분에 오류가 있는 경우 두 번째 명령(&& 다음)은 실행되지 않습니다. csv-editor.php 스크립트가 경로에 있습니까? 그렇지 않은 경우 절대 경로 /x/y/my.script를 사용하여 실행해야 합니다.

나는 스크립트가 당신의 경로에 없다고 확신하므로 "/usr/bin/php /x/y/script.php...."가 그 트릭을 수행해야 합니다.

하지만 먼저 로그를 읽어보세요...

답변2

2가지 솔루션이 있습니다. 이를 #! /bin/bash스크립트의 첫 번째 줄로 추가하거나 다음 두 줄로 crontab 파일을 시작할 수 있습니다.

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

관련 정보