启动作业的自动超时

时间:2009-10-15 19:25:21

标签: macos timeout kill launchd

我有一个已配置为启动单元测试的启动作业。时不时地,单元测试会挂起(通常是因为一些不好的代码)。我知道我的测试通常只需要几分钟就可以运行。当它们挂起时,我通常不会注意到它大约一个小时,此时我必须弹出Activity Monitor并强行手动杀死我的测试。我希望launchd为我这样做。如何在一段时间后启动自动杀死我的工作(如果它仍然在运行)?

我一直在查看launchd man page,我注意到了一些有前途的密钥(例如TimeOutExitTimeOut),但说明中的措辞似乎并非如此我正在寻找的东西。

2 个答案:

答案 0 :(得分:1)

在玩TimeOutExitTimeOut之后,我得出结论,在某个时间间隔之后,似乎没有办法让launchd杀死进程。

我最终将所需的代码添加到我的程序本身。 (我的程序不仅仅是单元测试)

答案 1 :(得分:0)

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

一种可能性是使用launchd的看门狗功能。如果您可以自定义单元测试以在文件启动时触摸该文件,则可以在感知到该文件时启动单独的启动任务。如果单元测试脚本未在指定的时间间隔内删除该文件,则应该将其终止。为此,您可以让监视程序任务启动一个脚本,该脚本获取单元测试的PID,休眠所需的时间间隔,然后在该进程仍在运行时终止单元测试。 YMMV。