我想知道我们是否可以在特定时间限制内停止单个JVM。如果它没有在该时间限制内停止,则从shell脚本中终止进程。
如果我们正在执行./stopServer.sh JVM_Name - 它将一直运行直到jvm不会停止或直到任何错误并退出。
我想要做的是:./ stopServer.sh JVM_Name - 如果这在2分钟内没有停止(假设),那么终止进程(但如何弄清楚它是不是在2分钟内通过shell脚本停止在进程杀人之前)。我可以写条件来杀人。但不确定如何检查JVM是否在2分钟内停止,以便我们可以继续杀死进程。
任何人都可以建议shell脚本代码来识别jvm是否在特定时间限制内停止?
答案 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或者根本没用过