2

我们的一个应用服务器(Glassfish v3.0.1)一直无缘无故地崩溃。有时,我远离互联网,所以我无法再次运行它。因此,我编写了一个简单的 bash 脚本等待 10 分钟,然后以管理员身份运行。它像是:

#!/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-domain并且stop-domain命令根本不起作用。这意味着,我既不能停止 Glassfish,也不能访问它。我不知道其他人之前是否遇到过这个问题。如果进程死了,我唯一能做的就是查找 Java 进程的 ID 并从终端中将其杀死。这根本不可取。任何想法为什么当我退出脚本时 Java 进程会死掉?
  2. 我想添加到脚本中的是检查 Glassfish 正在使用的端口。如果端口被占用,也许我可以假设 Glassfish 没有关闭!(但是,尽管 Glassfish 已死,但 Glassfish 仍可能使用端口(默认为 8080),我不确定)。如果没有,那么借助一个简单的代码,我可以获取 Java 进程的 id 并将它们全部杀死。然后start-domain命令将成功运行。关于如何做到这一点的任何想法或任何指示?
4

1 回答 1

2

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

sudo crontab -e

并添加这一行

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

这将asadmin每十分钟运行一次。

如果您对命令行不满意,您也可以尝试gnome-schedule,但我没有这方面的经验。

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

于 2013-02-28T12:16:33.790 回答