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

Skip the line of execution in shell script if the line take more time to execute

我有一个 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。然后,在你回显后添加一个 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 秒内没有 return 退出代码或退出代码不为 0,则打印“xyzServer JVM 停止,超时”否则打印“停止的 xyzServer JVM”