Cronjob与Jelastic和Glassfish

时间:2014-03-05 14:29:32

标签: bash cron glassfish crontab jelastic

我正在 Jelastic -Environment中的 Glassfish -Server上运行网络应用MyCronTest)。这个web应用程序包含servlet(/test),我想通过 cron-job 定期调用。

所以我从Jelastic文档中跟踪this tutorial,但是他们使用 Tomcat 而不是 Glassfish ,我不太确定路径和放置位置哪个文件......现在我迷路了;)

servlet
在我的浏览器中直接调用servlet时,会将以下行打印到System.out

test executed at 05/03/2014 15:00

要执行的bash文件
我创建了一个名为myCronJob.sh bash 脚本,并将其放在glassfish3/temp目录中:

#!/bin/bash
curl http://myGlassfish.jelastic.dogado.eu/MyCronTest/test;

我当然测试了它,它是可执行的并且它可以工作(至少当我在我的计算机上执行它时)。

cron事件调度程序
根据{{​​3}},我需要编辑一个文件/cron/tomcat。好吧,我发现/cron/glassfish(我猜)应该这样做。

# IMPORTANT NOTE!
# Please make sure there is a blank line after the last cronjob entry.
*/1 * * * * /opt/glassfish3/temp/myCronJob.sh
我告诉我,最后我添加了一个空行。我甚至尝试过

*/1 * * * * /bin/bash /opt/glassfish3/temp/myCronJob.sh

正如他们在教程中所建议的那样。但仍然没有输出。没有错误..只是空的日志文件。

有谁知道我在这里缺少什么?我做错了吗?

解决方案/编辑

感谢tutorial Damien's我终于能够缩小我的问题范围了。实际上,我的 bash-script 中的行导致了这个问题:

curl http://myGlassfish.jelastic.dogado.eu/MyCronTest/test;

应该是

curl http://localhost/MyCronTest/test;

因为我被防火墙阻止了。幸运的是,我的Glassfish运行在同一台机器/环境中,因此localhost正常工作 其他一切都是正确的。

1 个答案:

答案 0 :(得分:1)

  

好吧,我发现一个/ cron / glassfish(我猜)应该这样做。

正确。

  

但仍然没有输出。没有错误..只是空的日志文件。

假设您已将文件正确上传到/opt/glassfish3/temp/myCronJob.sh,我建议您尝试将cron输出定向到您自己的日志文件或通过电子邮件发送给您:

MAILTO="your@email.com"
*/1 * * * * /opt/glassfish3/temp/myCronJob.sh 2&1 > /opt/glassfish3/glassfish/nodes/localhost-domain1/instance-168458181/logs/cronoutput.log

请注意,由于丢失了PTR(反向DNS)等内容,您的垃圾邮件过滤器可能会过滤该电子邮件 - 但是可以像这样用于测试/调试目的(只是不要依赖这些邮件获取)通过任何关键的事情!)

如果这些提示对您没有帮助,那么我建议您与托管服务提供商的支持团队联系,以验证.sh文件的权限,手动执行时的输出以及cron日志文件内容(所有这些内容只有他们可以帮助您)。