在时间限制内停止WebSphere JVM?

时间:2016-06-02 03:16:49

标签: shell websphere ksh aix websphere-7

我想知道我们是否可以在特定时间限制内停止单个JVM。如果它没有在该时间限制内停止,则从shell脚本中终止进程。

如果我们正在执行./stopServer.sh JVM_Name - 它将一直运行直到jvm不会停止或直到任何错误并退出。

我想要做的是:./ stopServer.sh JVM_Name - 如果这在2分钟内没有停止(假设),那么终止进程(但如何弄清楚它是不是在2分钟内通过shell脚本停止在进程杀人之前)。我可以写条件来杀人。但不确定如何检查JVM是否在2分钟内停止,以便我们可以继续杀死进程。

任何人都可以建议shell脚本代码来识别jvm是否在特定时间限制内停止?

1 个答案:

答案 0 :(得分:0)

JVM是一个过程,因此可以使用kill命令停止 - kill $processid或更残酷的kill -9 $processid

如果您使用类似java ...的内容从脚本启动JVM,那么我建议在该行的末尾添加&并在以下行中

processid=$!

保存后台进程的id。 然后

sleep 120

将等待2分钟。 现在你有两个选择 - 要么就是杀人

kill $processid /dev/null 2>&1

或首先检查processid是否(非常不可能)被另一个进程重用(或使用其他方式检查你的JVM是否已经完成,可能是一个从你的java程序中指出这个的文件),然后如果匹配使用杀人。

ps -ef|grep -w $processid |grep -w java > /dev/null

如果它的返回码为零,则继续使用kill

test $? -eq 0 && kill $processid

我通常会相信processid是我的JVM或者根本没用过