105

我希望能够跟踪文件并查看哪个进程正在触摸该文件。那可能吗?我知道我可以在活动监视器中看到打开的进程列表,但我认为这很快就会让我看到它。这样做的原因是我正在使用一个框架,我认为正在使用框架的系统版本而不是调试版本,我想看看哪个进程正在触及它。

4

5 回答 5

108

这很简单:sudo fs_usage | grep [path_to_file]

于 2011-11-30T01:08:30.423 回答
95

lsof将列出打开的文件,但对于瞬时接触可能会有点尴尬(例如,如果文件在 lsof 运行时未打开,则不会显示)。

我认为你最好的选择是 fernLightning 的fseventer.app。它是“nagware”,允许您实时(以图形方式)观看 fsevents API。

于 2011-11-29T20:38:18.997 回答
43

但我花了 2 分钟谷歌搜索,在这里找到了你的答案

$ lsof | grep [随便]

将 [whatever] 替换为您要查找的文件名的位置。有了这个,你可以看到哪个程序拼命地持有你即将被丢弃的文件。退出该程序后,您的垃圾箱将清空。

于 2011-11-29T20:26:24.217 回答
20

更快的方法是:

$ 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
于 2013-11-01T08:40:33.090 回答
18

另一种选择是Sloth。这是其他人提到的 LSOF 的免费开源 GUI。

于 2013-12-07T07:23:16.103 回答