我正在 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
正常工作
其他一切都是正确的。
答案 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日志文件内容(所有这些内容只有他们可以帮助您)。