玻璃鱼死了,不会重新开始

时间:2013-02-28 09:42:29

标签: bash ubuntu glassfish

我们的一个应用程序服务器(Glassfish v3.0.1)一直没有理由地压缩。有时,我远离互联网,所以我不能再回来了。因此,我写了一个简单的bash脚本等待10分钟,然后运行asadmin。它就像:

#!/bin/bash
while true; 
do sleep 600;
sudo /home/ismetb/glassfishv3.0.1/glassfish/bin/asadmin start-domain; 
done

这似乎工作正常,但我有几个问题:

  1. 如果我终止bash脚本(通过按ctrl + z按钮),Java进程(Glassfish)就会死掉,而start-domainstop-domain命令根本不起作用。这意味着,我既不能阻止Glassfish,也不能访问它。我不知道是否有其他人在此之前遇到过这个问题。如果进程终止,我唯一能做的就是查找Java进程的ID并从终端中删除它。这根本不可取。当我退出脚本时,为什么Java进程会死?
  2. 我想要添加到我的脚本中的是检查Glassfish正在使用的端口。如果港口被占用,也许我可以假设Glassfish没有下降! (但是,Glassfish仍然可以使用端口(默认为8080),尽管Glassfish已经死了,我不确定)。如果没有,那么在一个简单的代码的帮助下,我可以获得Java进程的id并将其全部删除。然后start-domain命令将成功运行。关于如何做到这一点的任何想法或任何指示?

1 个答案:

答案 0 :(得分:2)

您可以使用cron作业。要为root安装cron作业,请输入

sudo crontab -e

并添加此行

*/10 * * * * /home/ismetb/glassfishv3.0.1/glassfish/bin/asadmin start-domain

这将每十分钟运行asadmin

如果您对命令行不满意,可以尝试使用gnome-schedule,但我没有相关经验。

对于第二个问题,您可以使用curlwget访问glassfish。您可以尝试获取某些URL,甚至可以访问管理界面,如果没有得到响应,则假设glassfish已关闭。