我有一个shell脚本,用于从~/.bin/shellScript
:
OLD="$(curl --silent http://someServer:12345/stats.json | json someKey)"
NEW="$(curl --silent http://otherServer:12345/stats.json | json someKey")
echo "OLD $OLD - NEW $NEW"
我想回应交互式运行它的结果,但我一直想记录收集的结果。
所以crontab -e
,然后添加*/5 * * * * /home/user/.bin/shellScript >> /media/dump/scriptDump
。
以交互方式运行脚本工作正常 - 我得到OLD 123 - NEW 456
,但是当我查看从cron运行的内容时,我得到OLD - NEW
,没有数据被curl抓住。
答案 0 :(得分:1)
正如在评论中发现的那样,您需要在调用时添加json
的完整路径。这是因为crontab的环境有限。
所以而不是
OLD="$(curl --silent http://someServer:12345/stats.json | json someKey)"
NEW="$(curl --silent http://otherServer:12345/stats.json | json someKey")
必须是
OLD="$(curl --silent http://someServer:12345/stats.json | /path/to/json someKey)"
NEW="$(curl --silent http://otherServer:12345/stats.json | /path/to/json someKey)"
^^^^^^^^^^^^^
[[注意您的第二行有")
而不是)"
]]
否则,您还可以将json
路径添加到crontab中,如How to get CRON to call in the correct paths所示:
PATH=/usr/local/sbin: ... :/path/of/json