2009-10-15 97 views
1

我有一個啓動的作業,我已配置爲運行我的單元測試。偶爾,單元測試會掛起(通常是因爲一些錯誤的代碼)。我知道我的測試通常只需要幾分鐘即可完成。當他們掛起時,我通常不會注意到它大約一個小時,此時我必須彈出「活動監視器」並手動強制終止我的測試。我想啓動爲我做這個。我怎麼能在一段時間後自動殺死我的工作(如果它仍在運行)?啓動作業的自動超時

我一直在尋找在launchd man page,而且我發現了幾個有前途的鍵(如TimeOutExitTimeOut),但在描述措辭好像它並不完全符合我要找的。

回答

1

TimeOutExitTimeOut後,我斷定似乎沒有辦法讓launchd在一定的時間間隔後終止進程。

我最終將所需的代碼添加到我的程序本身。 (我的程序不僅僅是單元測試)

2

launchd無法知道或關心您的過程所做的任何事情。只要它沒有退出幾秒鐘,它就很高興。

0

(注:這些是半原始想法,而不是拋光溶液)

一種可能性是使用的launchd的看門狗功能。如果您可以自定義單元測試以在啓動時觸摸文件,則可以在感應該文件時啓動單獨的啓動任務。如果單元測試腳本沒有在指定的時間間隔內刪除文件,那麼它應該被終止。爲此,您可以讓看門狗任務啓動一個腳本,獲取單元測試的PID,休眠所需的時間間隔,然後殺死單元測試,如果該過程仍在運行。因人而異。

+0

這與我最終實現的類似,除了我的程序中作爲第二個線程運行。 – 2009-10-16 15:29:55