2015-07-10 29 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