我有一个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在一定时间后没有停止,执行应该移动到下一行
你能帮帮忙吗?
使用timeout命令
//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&;else print "Stopped xyzServer JVM">
我会尝试在命令末尾附加&
,这将在后台shell中运行它。然后,在回显之后,添加sleep
命令,在继续之前等待stop命令,无论需要多长时间。总的来说,比如:
//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```