问题描述
我有一个 shell 脚本可以停止 IBM WebSphere 中的 JVM
如下图
//Some code
sh /application/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/stopServer.sh JMS-Server -username admin -password ......
echo "Stop xyzServer JVM"
//Some code
我的问题是,有时需要花费很多时间来停止服务器,因此脚本将继续运行并且永远不会结束
我需要一个解决方案来跳过这行执行,如果这段代码等待JVM停止完成,如果JVM在一定时间后没有停止,执行应该移动到下一行
你能帮忙吗?
解决方法
我会尝试在您的命令末尾附加 &
,这将在后台 shell 中运行它。然后,在您 echo 添加 sleep
命令后,您想在继续之前等待停止命令的时间长度。总的来说,类似于:
//Some code
sh /application/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/stopServer.sh JMS-Server -username admin -password ...... &
echo "Stop xyzServer JVM"
sleep 10m
//Some code```
,
使用超时命令:
//Some code
timeout 180 sh /application/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/stopServer.sh JMS-Server -username admin -password ...... && echo "Stopped xyzServer JVM" || echo "xyzServer JVM stop,timeout"
//Some code
运行 stopServer.sh 脚本,如果它在 180 秒内没有返回退出代码或者退出代码不是 0,则打印“xyzServer JVM stop,timeout”否则打印“Stopped xyzServer JVM”