2

我有一个shell脚本,它遍历目录中的每个JSon文件并使用phantomJS创建一个highchart png。

当安排一个 cron 任务来运行这个脚本时,问题就出现了——(最初我使用了 inotifywait 但得到了同样的错误)。

shell 脚本如下所示:

#!/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'”

从命令行运行时,shell 脚本运行良好,但在尝试安排它时出现问题。

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 回答