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

如果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 我的问题是,有时需要花费大量时间来停止服务器,因此,脚本将

我有一个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
我的问题是,有时需要花费大量时间来停止服务器,因此,脚本将继续运行,并且永远不会结束

我需要一个跳过这一行执行的解决方案,如果这段代码等待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秒,而是立即路由,是因为它是后台进程吗?