为什么curl在cron的shell脚本中运行时不生成输出?
我在为什么curl在cron的shell脚本中运行时不生成输出?,shell,curl,cron,crontab,Shell,Curl,Cron,Crontab,我在~/.bin/shellScript中有一个用于从某些服务器获取数据的shell脚本: 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" 我想以交互方式回显运行它的结果,但我也一直想记录收集到的
~/.bin/shellScript
中有一个用于从某些服务器获取数据的shell脚本:
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抓取数据。正如在注释中发现的那样,在调用它时需要添加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中,如所示:
如果在
json someKey
上添加json
的完整路径会怎么样?Crontab doe在有限的环境中工作,某些路径可能会丢失,因此您需要对其进行全面介绍。我从未想过需要在shellscript中修复$PATH(尽管我知道cron的环境有限)/这总是发生在我们所有人身上,没问题。那么这是否意味着现在它对你起作用了?是的。如果你这样回答,我会接受的。干杯
PATH=/usr/local/sbin: ... :/path/of/json