2013-03-19 3 views
2

디렉토리의 모든 JSon 파일을 통과하고 phantomJS를 사용하여 하이 차트 png를 만드는 쉘 스크립트가 있습니다.쉘 스크립트는 CLI에서 실행되지만 Crontab에서는 실행되지 않습니다.

이 스크립트를 실행하기 위해 cron 작업을 예약 할 때 문제가 발생합니다. - (처음에는 inotifywait를 사용했지만 동일한 오류가 발생했습니다).

#!/bin/sh 
for i in *.json; do 
    filename="${i%.*}" 
    phantomjs /var/www/highcharts.com/exporting-server/phantomjs/highcharts-convert.js -infile $i -outfile img/$filename.png -scale 2.5 -width 300 -constr Chart -callback /var/www/highcharts.com/exporting-server/phantomjs/callback.js 
done 

을하고 크론 작업은 다음과 같습니다 :

쉘 스크립트는 다음과 같습니다 I 오류 받고 있어요 로그 파일에서

* * * * * /var/www/highcharts.com/exporting-server/phantomjs/test/createGraphs.sh >> /var/www/highcharts.com/exporting-server/phantomjs/highcharts.log 

:

"를 할 수 없습니다 '* .json'파일을여십시오.

쉘 스크립트는 명령 행에서 실행할 때 정상적으로 실행됩니다. b 문제는 일정을 잡으려고 할 때 발생합니다.

+0

이 있는지 확인 JSON 파일이있는 읽기/쓰기된다 cron이 실행중인 사용자에 의해 – Anubhab

답변

3

Cron은 홈 디렉토리에서 명령을 실행합니다. json 파일이 홈 디렉토리에 없다고 가정하므로 스크립트가 해당 오류로 실패합니다. 스크립트에서 JSON 파일의 경로를

* * * * * cd /path/to/json && /var/www/highcharts.com/exporting-server/phantomjs/test/createGraphs.sh >> /var/www/highcharts.com/exporting-server/phantomjs/highcharts.log 

또는 지정 :

어느 디렉토리에 CD로 cron 작업을 변경

#!/bin/sh 
for i in /path/to/json/*.json; do 
    filename="${i%.*}" 
    phantomjs /var/www/highcharts.com/exporting-server/phantomjs/highcharts-convert.js -infile $i -outfile img/$filename.png -scale 2.5 -width 300 -constr Chart -callback /var/www/highcharts.com/exporting-server/phantomjs/callback.js 
done 
+0

나는이 haha를 시도했다는 것을 맹세 할 수 있었다 .. 빠른 도움을 주셔서 감사합니다 :) – HelloWorld

관련 문제