OSX:监控 launchd、守护进程和代理

3
有没有一种方式可以监控launchD本身,即是否有作业正在从launchd守护进程/代理列表中加载或卸载?例如,任何管理应用程序是否可以注册以接收事件,每当由launchD守护进程加载或卸载新的plist时,例如通过触发此命令:launchctl load/unload /Library/LaunchDaemons(或launchAgents)/test.plist
轮询是一种选择,但是否有任何资源有效的方法?
任何帮助都将不胜感激。
1个回答

0

我不确定这是否正是您要寻找的,但在OSX上有一个非常强大的工具叫做dtrace。您可以使用它来查看系统上发生的各种事情,并按照您的意愿进行过滤,例如系统调用。

对于您特定的场景,我甚至会看一下dtruss,这是一个更易于使用的工具,它使用dtrace为您提供信息:https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/dtruss.1m.html 每次进行launchctl调用时,从dtruss获取“提示”应该相当简单,但我不确定您想从调用中获取什么信息。

dtrace有整本书介绍如何使用它和编写签名。如果您无法从dtruss获得所需的所有内容,则可以进一步了解它。

请注意,这两个都是命令行工具,如果您正在寻找某些编程工具,则需要更多的工作。


我正在寻找的是捕获管理员用户尝试通过从命令行发出此命令来卸载我的守护进程的事件:sudo unload xyz.plist。有没有办法从dtruss中捕获此事件? - ZestyZest
我想说是的。如果您使用它来查看launchctl所做的所有系统调用,然后自己调用卸载,您可以看到可以过滤哪个系统调用。在这种情况下,dtrace的一个重要优势可能是更容易看到任何进程打开您的plist文件的情况。 - Shrewd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接