在OS X上,使用FSEvents API,我可以轻松获取感兴趣路径的文件和目录通知(创建,删除等)。但是,我想知道是否有任何方法可以获得执行操作的进程的PID或名称(例如创建文件)。我知道如果您实时监控文件系统,可以获取此信息(请参阅:fs_logger),但我更倾向于使用FSEvents
,因为它允许您确切地指定哪些路径监视和以回调方式工作(因此可能减少CPU密集度?)。
答案 0 :(得分:1)
Apple 有一个相对较新的 (macOS 10.15+) C
框架,名为 Endpoint Security,它几乎可以满足您正在寻找的所有文件系统事件监控要求:
pid
、uid
等(例如,文件创建的事件消息 (es_event_create_t) 包括带有流程详细信息的 es_process_t 字段)< /li>
Apple 一直在推动开发人员采用这种新框架,以支持以前的监控 API(例如利用 KAUTH
或 MAC
的“传统”内核扩展;OpenBSM
API),因此这是我可以推荐的唯一解决方案(超出 FSEvents
)。
有一些关于该主题的 WWDC 会议和示例项目:https://developer.apple.com/documentation/endpointsecurity/monitoring_system_events_with_endpoint_security