如何监视OS X应用程序的文件访问?


61

我正在寻找FileMon的OS X核心响应者,该对象后来包含在ProcessMon中

顺便说一句,必须能够按流程进行过滤。


我将添加三个选项-由于Mac OS X的Unix传统与NT体系结构不同-这些工具不能完全重叠。您是在寻找API进行编程还是只是工具来窥视当前正在发生的事情(或在某些文件更改后触发操作)
bmike

Answers:


62

仪器(Apple Xcode开发套件的一部分)可以监视所有文件访问和写入。从/Applications/Xcode.app/Contents/Applications/Instruments.app中打开它,选择您的应用程序或进程,然后按Start。菜单中提供了广泛的过滤器选项。

较旧版本的Xcode将应用程序存储在/Developer/Applications/Instruments.app中


7
从Xcode 5开始,它现在位于/Applications/Xcode.app/Contents/Applications/Instruments.app中-也可以从XCode应用程序-Xcode-> Open Developer Tool-> Instruments中进行访问。
Mixologic 2014年

如果由于您的应用程序而导致无法访问文件,则此方法不起作用
liquidblueocean

实际上,它不适用于OS X:“ I / O活动不支持macOS平台”。另请阅读:stackoverflow.com/questions/35621938/...

您可以提供更多详细信息吗?哪个工具-活动监视器?我在这里看到所有进程的输出很长,不确定如何针对一个进程将其过滤到磁盘I / O
Elliott


13

已启动是监视文件(文件夹是特殊文件)的主要系统级工具,因为该工具始终处于运行状态。Hazel是一个程序,可以帮助在已启动的WatchPath周围放置漂亮的GUI。在这里查找有关发布的许多技巧,以及数百篇教程,一篇不错的维基百科文章和Apple开发文档。

fseventsd将记录一些更改-因此,如果启动不是您想要的,则可以使用FSeventer或访问这些文件。

fs_usagelsof是可识别进程的命令行工具,可在IO子系统运行时使用它。fs_usage缓冲区可能会超载,因此,如果您希望得到更多保证,而又不希望“快速了解”,那么与其他命令一样,它对于总体正确结果的依赖性也较小。


我已经使用FSEventer多次,以了解应用程序正在访问什么。在寻找许可证文件进行实验室部署的系统映像时,这非常有用。
Digitalchild

fseventer非常适合实时显示大图,您真的可以看到正在发生的事情!

1
由于FSeventer已死,因此也可以尝试FSMonitor。
GDP2

10

在该/Applications/Utilities文件夹中没有人提到活动监视器。

单击列表中的进程名称,然后单击工具栏上的“检查”按钮。

有三个选项卡在出现的窗口:MemoryStatisticsOpen Files and Ports。该Open Files and Ports选项卡将显示该进程正在使用的所有打开的文件。


1
如果文件被未知应用程序访问,则此方法不起作用
liquidblueocean

3

lsof

Terminal.app上的命令可以为您做到吗?使用man lsof赶上它的使用。干杯


3

更快的方法是:

$ lsof [path_to_file]

此解决方案不需要root密码,并且可以为您提供以下清晰的结果:

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
Finder     497  JR7   21r   REG    1,2   246223 33241712 image.jpg
QuickLook 1007  JR7  txt    REG    1,2   246223 33241712 image.jpg

1

此外,还包括iosnoopiotop根据您的具体需求。可以通过管道传输这些终端命令,grep以监视来自特定进程或特定文件的文件系统事件。


0

有一个图形界面可以lsof输入信息。它是HAMSoft的捐赠软件,被称为What's Keeping Me。旨在回答“为什么不能将其从垃圾箱中删除?” 这个问题经常出现在OS X上,如果您只是好奇正在发生的事情,那么它也是一种方便的方法来监视正在运行的进程上的开放I / O句柄。它允许您进行一些简单的搜索和过滤。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.