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