如何查看该进程是否被杀?

时间:2016-10-10 22:00:36

标签: linux bash terminal timeout

如果要为流程设置时间限制,只需在流程前使用k

k['name']

如果在1.5秒后没有完成,则会导致timeout

我在一些bash脚本中使用了该命令;我怎么知道一个过程是否在时间限制之前完成,或者它被杀死了(因为超过了时间限制)?

2 个答案:

答案 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