代码之家  ›  专栏  ›  技术社区  ›  Dave DeLong

已启动作业的自动超时

  •  1
  • Dave DeLong  · 技术社区  · 15 年前

    我有一个已配置为运行单元测试的已启动作业。每隔一段时间,单元测试就会挂起(通常是因为一些错误的代码)。我知道我的测试通常只需要几分钟就可以完成。当他们挂起的时候,我通常一个小时都没有注意到它,这时我必须打开活动监视器并手动终止我的测试。我想让Launchd帮我做这个。我怎么能在一段时间后自动启动并杀死我的工作(如果它还在运行的话)?

    我一直在看 launchd man page 我注意到一些有前途的钥匙 TimeOut ExitTimeOut 但描述中的措辞似乎与我所寻找的不完全一致。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Azeem.Butt    15 年前

    Launchd无法了解或关心您的流程所做的任何事情。只要几秒钟不退出,它就会很开心。

        2
  •  1
  •   Dave DeLong    15 年前

    玩了之后 TimeOut ExitTimeOut 我已经得出结论,似乎没有一种方法可以让launchd在一定的时间间隔后终止进程。

    最后我把需要的代码添加到我的程序本身。(我的程序不仅仅是单元测试)

        3
  •  0
  •   Quinn Taylor    15 年前

    (注:这些都是半原始的想法,而不是抛光的解决方案。)

    一种可能是使用launchd的看门狗功能。如果您可以自定义单元测试以在文件启动时触摸该文件,那么当它检测到该文件时,您可以单独启动一个已启动的任务。如果单元测试脚本没有在指定的时间间隔内删除该文件,那么应该终止它。为此,您可以让看门狗任务启动一个脚本,该脚本获取单元测试的PID,休眠所需的间隔,然后在该进程仍在运行时终止单元测试。基督教青年会。