如果在shell脚本中执行的行需要更多时间,则跳过该行



我有一个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```

相关内容

  • 没有找到相关文章