如果shell脚本中的执行行需要更多时间执行,请跳过该行
我有一个shell脚本,它将停止IBMWebSphere中的JVM 如下如果shell脚本中的执行行需要更多时间执行,请跳过该行,shell,scripting,logic,sh,websphere-8,Shell,Scripting,Logic,Sh,Websphere 8,我有一个shell脚本,它将停止IBMWebSphere中的JVM 如下 //Some code sh /application/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/stopServer.sh JMS-Server -username admin -password ...... echo "Stop xyzServer JVM" //Some code 我的问题是,有时需要花费大量时间来停止服务器,因此,脚本将
//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
命令,无论您希望在继续之前等待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```
我将尝试在命令末尾追加
&
,这将在后台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```
使用超时命令:
//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”使用超时命令:
//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”如果线程在后台运行,并且如果stopServer执行时间过长,执行是否仍会继续到下一行?不影响脚本的整个执行?如果是这种情况,那么就不需要睡眠了,对吗?它将立即继续到下一行,不管它是否挂起,而问题是“JVM在某个时间后是否停止”,因此睡眠可以满足该要求。话虽如此,如果您想在一段时间后停止停止,然后再转到脚本中的下一行,那么
timeout
命令可能会更好(然而,&
和等待
不会,除非您添加一个kill
命令,但此时您应该只使用timeout…,这取决于您想要的行为)。如果线程在后台运行,并且stopserver执行时间过长,那么执行是否仍会继续执行下一行?而不会影响整个脚本的执行?如果是这样,则不需要睡眠,对吗?无论是否挂起,它都会立即继续执行下一行,而问题是“如果JVM在一定时间后没有停止”,因此需要睡眠来满足该要求。因此,如果您希望在一定时间后停止,然后再转到脚本中的下一行,那么timeout
命令可能会更好(然而,&
和等待
不会,除非您添加一个kill
命令,但此时您应该只使用timeout…,这取决于您想要的行为)。无需担心。如果这符合您的目标,请花时间接受解决方案。我一直保持超时20 sh/application/…我可以看到它正确地路由到其他条件,以防重新启动时出现问题,但我看不到它正在等待20秒,而是立即路由,这是因为它是一个后台进程吗?无需担心。如果这符合您的目标,请花时间接受解决方案。我已保持超时20 sh/application/…我可以看到它在重新启动时正确路由到其他条件,但我看不到它正在等待20秒,而是立即路由,是因为它是后台进程吗?