3

我有一个 crontab,它触发一个 PHP 脚本,该脚本运行 AWS CLI 命令“aws ec2 create-snapshot”。

当我通过命令行运行脚本时,php 脚本成功完成,aws 命令将 JSON 字符串返回给 PHP。但是当我设置一个 crontab 来运行 php 脚本时,aws 命令不会返回任何内容。

crontab 以与我自己在命令行上运行 PHP 脚本时相同的用户身份运行,所以我有点难过?

4

2 回答 2

6

我在运行 ruby​​ 脚本(ruby script.rb)时遇到了同样的问题。我用它的完整路径(/sources/ruby-2.0.0-p195/ruby)替换了 ruby​​,它起作用了。在您的情况下,将“aws”替换为其完整路径。找到它:find / -name "aws"

于 2014-01-23T12:39:58.780 回答
1

必须指定 aws 命令的完整路径的原因是因为 cron 默认在非常有限的环境中运行。我也遇到了这个问题,并通过将其添加到 cron 脚本中对其进行了调试:

set | sort > /tmp/environment.txt

然后我通过 cron 和命令行运行脚本(在运行之间重命名环境文件)并比较它们。这让我看到我需要同时设置 PATH 和 AWS_DEFAULT_REGION 环境变量。完成此操作后,脚本工作得很好。

于 2015-02-16T22:36:45.663 回答