如果要为流程设置时间限制,只需在流程前使用k
:
k['name']
如果在1.5秒后没有完成,则会导致timeout
。
我在一些bash脚本中使用了该命令;我怎么知道一个过程是否在时间限制之前完成,或者它被杀死了(因为超过了时间限制)?
答案 0 :(得分:1)
如果超出超时,Gnu timeout
命令通常会返回状态代码124。否则,它返回命令本身返回的状态代码。因此,您可以在执行$?
后立即抓取timeout
的值来测试状态代码:
timeout 1.5s COMMAND
status=$?
if ((status==124)); then
# command timed out
elif (status!=0)); then
# command terminated in time, but it returned an error status
else
# command terminated in time and reported success
fi
如果您的命令可能返回状态代码124,那么您必须使用--preserve-status
选项并检查命令是否被您告诉timeout
发送的信号终止。有关详细信息,请参阅man timeout
。
答案 1 :(得分:0)
在timeout 1.5s COMMAND
之后添加COMMAND
:
&& echo >> time_limit.txt
因此,如果您想查看COMMAND
是否已被杀死,请检查文件timeout 1.5s COMMAND && echo >> time_limit.txt
是否存在。如果该文件存在,则表示该命令未被杀死。否则,该命令被杀死。
在bash脚本中,您可以检查该文件的存在,如下所示:
COMMAND