【问题标题】:Shell script scheduling on acquia serveracquia 服务器上的 Shell 脚本调度
【发布时间】:2015-02-23 13:40:39
【问题描述】:

我想安排一个 shell 脚本每小时运行一次。为此,我试图从 acquia 服务器上的 cron 进行安排。

shell 脚本文件位于“docroot/scripts/script_name.sh”中。在命令选项中,我将命令指定为“/var/www/html/pllsrv2313.dev/scripts/script_name.sh”,但它不起作用。

【问题讨论】:

  • 你能提供你的shell脚本吗?如果不看代码,我们就无法知道什么是行不通的。您能否让脚本在本地或 Acquia 服务器上运行? SSH 到您的 acquia 服务器并运行命令“sh /path/to/shell/script.sh”以查看如果直接执行它是否有效。以下是有关在 cron 作业中使用 shell 脚本的其他文档:docs.acquia.com/cloud/manage/cron#example

标签: linux shell drupal-7 cron acquia


【解决方案1】:

我认为shell脚本文件应该在“scripts/script_name.sh”中。

如果你从shell文件调用php脚本,你需要使用php文件的整个路径,即使它在同一个目录中。

【讨论】:

  • 我认为我通过反复试验发现了这一点。那是不久前的事了。我认为您不希望 docroot 中的脚本,以免用户恶意或意外访问它们,并且在我给出绝对路径之前,php 文件的路径对我不起作用。跨度>
【解决方案2】:

首先从登录你的盒子开始:

然后像@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
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-01
    • 2012-01-12
    • 2012-10-20
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    相关资源
    最近更新 更多