我想安排一个 shell 脚本每小时运行一次。为此,我试图从 acquia 服务器上的 cron 进行安排。
shell 脚本文件位于“docroot/scripts/script_name.sh”中。在命令选项中,我将命令指定为“/var/www/html/pllsrv2313.dev/scripts/script_name.sh”,但它不起作用。
我认为shell脚本文件应该在“scripts/script_name.sh”中。
如果从 shell 文件调用 php 脚本,则需要使用 php 文件的整个路径,即使它位于同一目录中。
首先从登录您的盒子开始:
然后像@ScottA 提到的那样调用你的脚本:这次使用详细标志,即 -x。
sh -x /var/www/html/pllsrv2313.dev/scripts/script_name.sh
这将转储脚本运行或出错的所有内容。看看有没有什么不是你所期望的。
就我而言,在我的脚本中,我有一个未按计划进行的 curl 请求:
curl --silent --compressed http://dev.example.com/code.sh
所以我标记了我的 curl 调用 --verbose 以使其也转储:
curl --silent --compressed --verbose http://dev.example.com/
并称:
sh -x /var/www/html/example.dev/docroot/ex_scripts/my_script.sh
我回来说无法解析主机,因为我的开发域仅在我的 DNS 中可用。所以对我来说,问题是当 cron 运行时,我的 curl 无法对我的不可公开访问的开发域做。
...
+ curl --silent --compressed --verbose http://dev.example.com/
* getaddrinfo(3) failed for dev.example.com:80
* Couldn't resolve host 'dev.example.com'
* Closing connection #0
...