【问题标题】:How to see if the process was killed?如何查看进程是否被杀死?
【发布时间】:2016-10-10 22:00:35
【问题描述】:

当你想为一个进程设置时间限制时,你可以简单地在进程前使用timeout

timeout 1.5s COMMAND

如果 1.5 秒后没有完成,这将杀死 COMMAND

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

【问题讨论】:

    标签: linux bash terminal timeout


    【解决方案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

    【讨论】:

      【解决方案2】:

      COMMAND之后添加&& echo >> time_limit.txt

      timeout 1.5s COMMAND && echo >> time_limit.txt
      

      所以,如果您想查看COMMAND 是否被杀死,请检查文件time_limit.txt 是否存在。如果该文件存在,则意味着该命令未被终止。否则,该命令被终止。

      在 bash 脚本中,您可以检查该文件是否存在,如下所示:

      if [[ -r time_limit.txt ]]then;
      {
          echo "The command was NOT killed"
      }
      else
      {
          echo "The command was killed"
      }
      

      【讨论】:

        猜你喜欢
        • 2011-05-18
        • 1970-01-01
        • 1970-01-01
        • 2010-12-08
        • 2011-09-23
        • 2010-09-28
        • 1970-01-01
        • 2013-04-07
        相关资源
        最近更新 更多