2015-07-10 28 views
3

有沒有一種方法可以監控launchD本身,即如果某個作業正在從launchd守護進程/代理列表中加載或卸載?例如,任何管理應用程序註冊都可以在launchD守護程序加載或卸載新plist時接收事件,例如通過觸發此命令:launchctl load/unload /Library/LaunchDaemons(or launchAgents)/test.plistOSX:監控launchd,守護進程和代理

輪詢是一種選擇,但有沒有資源有效的方式?

任何幫助將是可觀的。

回答

0

我不確定這正是您正在尋找的內容,但OSX上有一個非常強大的工具,名爲dtrace。您可以使用它來查看系統上發生的各種事情,並根據需要對它們進行過濾,例如系統調用。

與您的特定情況下我甚至會看看dtruss這是一個非常容易使用的工具,使用DTrace爲您提供信息:https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/dtruss.1m.html 應該是很簡單的從dtruss每次拿到「提示」撥打電話是launchctl,我不確定你想要通過什麼樣的信息。

dtrace有關於如何使用它併爲其寫入簽名的全書。如果你不能從dtruss得到你需要的一切,你可以多看一點。

也不是這些都是命令行工具,如果你正在尋找一些程序化的東西,你會有更多的工作在你面前。

+0

我正在尋找的東西是捕獲事件,當一個管理員用戶試圖卸載我的守護進程說通過從命令行發射這個命令:sudo unload xyz.plist ..有一種方法來捕獲這個事件從dtruss ? – Abhinav

+0

我想說是的。如果您使用它來查看'launchctl'所做的所有系統調用,然後調用卸載,您可以看到可以過濾哪些系統調用。在這種情況下'dtrace'的一大優勢可能是,當你的'plist'文件被任何進程打開時,它更容易看到。 – Shrewd