2

ディレクトリ内のすべての JSon ファイルを通過し、phantomJS を使用してハイチャート png を作成するシェル スクリプトがあります。

このスクリプトを実行するために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

cron タスクは次のようになります。

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

ログ ファイルに次のエラーが表示されます。

「ファイル '*.json' を開けません」

シェル スクリプトは、コマンド ラインから実行すると正常に動作しますが、スケジュールを設定しようとすると問題が発生します。

4

1 に答える 1

3

Cron は、ホーム ディレクトリでコマンドを実行します。json ファイルがホーム ディレクトリにないと想定しているため、スクリプトはそのエラーで失敗します。

cron ジョブをディレクトリに cd するように変更します。

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

または、スクリプトで json ファイルへのパスを指定します。

#!/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
于 2013-03-19T09:36:40.097 に答える