我有一个在 fedora 22 上运行的脚本,我正在其中重新启动服务网络,作为故障排除调用的一部分service network restart
。我想检查该命令是否执行时间太长。如果花费太长时间,我想输出一条消息“重新启动网络服务时出错”。否则我想继续剧本。
答案1
您可以使用timeout
command 在给定的超时时间内运行命令或脚本。与此类似的东西:
timeout 10m command
它会等待命令在 10 分钟内完成,否则会终止该命令并以状态 124 退出。然后您可以检查该命令的退出状态timeout
并根据它打印相应的消息。请参阅此处了解更多信息:超时联机帮助页。
如果您不想终止长命令,请执行以下操作:
(( sleep $TIMEOUT; echo "command took so long!" ) & exec $COMMAND )
超时时,这将打印消息,但命令继续执行。
答案2
如果您不关心编辑原始系统脚本,则可以在脚本内创建一个类似的函数
timeoutf(){
#If hangs 1 minute, dies..
sleep 1m
kill $PPID
}
timeoutf&