查看Mac OS X中正在使用文件的进程


93

我希望能够跟踪文件并查看正在处理该文件的进程。那可能吗?我知道我可以在活动监视器中看到打开的进程的列表,但是我认为它正在迅速发生。原因是我使用的是框架,我认为框架的系统版本正在使用,而不是调试版本,并且我想看看哪个进程正在使用它。


1
这是一个使用的问题更好地提出对超级用户
迈克尔Dautermann


注意:^^^是一个非常相关的类似问题-仅供参考;-)
布拉德·帕克斯

Answers:


90

lsof 会列出打开的文件,但是对于短暂的触摸可能会有些尴尬(例如,如果lsof运行时文件未打开,则不会显示)。

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


39
lsof | grep myfilename为我工作。我的回收站中有一个PDF文件,系统声称该文件正在使用中。奇怪的是,lsof它正在被使用,PreviewPreview似乎没有运行(例如,当我通过命令行选项卡运行的应用程序时),但Activity Monitor确实表明它正在运行。愚蠢的预览。
戴夫·萨格

这对于瞬态文件(即,未打开但只能在保存时被触摸的文件)而言是完美的。
Jeronimo Colon III

今天,我也遇到了类似的问题,我的垃圾箱中的文件被僵尸预览进程保存了。打开预览并再次退出它为我解决了这个问题。我认为尽管已退出预览,但它定期保留文件。我经常在Preview中从Evernote中打开图像以进行裁剪,而且大多数情况下-即使不是在退出Preview之后,Evernote仍然警告说该图像仍在另一个应用程序中打开。
Vihung 2014年

这似乎类似于我现在遇到的问题-仍然没有解决方案。我使用Chrome下载了一个文件,然后使用Finder将其移动到了另一个文件夹。它显示为灰色,因此我使用lsof找出打开文件的人:Finder。我尝试过强制退出Finder(会自动重新启动它)。那没用。我试图关闭笔记本电脑,以确保一切都可以进入睡眠状态,并有望解决问题。那也不起作用。lsof继续将Finder显示为罪魁祸首,并且在UI中继续显示为灰色。
Victor Engel 2014年

1
有趣的是,关闭取景器窗口似乎可以解决问题。但是,如果我打开一个新的查找器窗口并导航到同一文件夹,则问题仍然存在。我通过将错误的文件拖到垃圾箱中(解决了这个问题,即在打开该文件的程序中发出警告,可能会产生不良影响),然后重新复制该文件,从而解决了该问题。
维克托·恩格尔

94

很简单: sudo fs_usage | grep [path_to_file]


10
这是到目前为止最好的答案。
NuSkooler

fs_usage应该作为root运行...这不是最好的解决方案。
bontoJR 2013年

这说明fs事件?如果某个进程打开了一个文件,但没有执行任何操作,则此处没有任何显示。或至少似乎是我的经验。sudo fs_usage | grep musiclibrary什么都没显示,但sudo lsof | grep musiclibrary显示了3个进程来访问我的音乐库数据库文件。
gman

43

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

$ lsof | grep [任何内容]

将[whatever]替换为您要查找的文件名。这样,您就可以看到哪个程序拼命地保留了要处理的文件。退出该程序后,垃圾桶将清空。


1
问题是我必须尝试非常快速地键入lsof。它可能只是短暂的
JPC

13
lsof -r将lsof置于重复模式
stoutyhk

如果文件已被释放,则将其grep有意义。
雷·亨特

16

更快的方法是:

$ 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

15

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


1
哇,这真是个很棒的工具,谢谢分享!它非常适合查找我丢失的流程。
RayB

2
我倾向于命令行解决方案,因为它们更可移植,但是我必须承认这是一个非常不错的工具!谢谢你的建议。
表格
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.