See what process is using a file in Mac OS X

2019-03-08 00:14发布

I would like to be able to track a file and see which process is touching that file. Is that possible? I know that I can see the list of open processes in activity monitor but I think it's happening to quickly for me to see it. The reason for this is I'm using a framework and I think the system version of the framework is being used instead of the debug version and I'd like to see which process is touching it.

5条回答
Lonely孤独者°
2楼-- · 2019-03-08 00:19

That's simple: sudo fs_usage | grep [path_to_file]

查看更多
Luminary・发光体
3楼-- · 2019-03-08 00:28

The faster way is:

$ lsof [path_to_file]

This solution doesn't require the root password and gives you back the following, clear, result:

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
查看更多
来,给爷笑一个
4楼-- · 2019-03-08 00:31

lsof will list open files, but it can be a bit awkward for momentary touches (eg, if the file isn't open when lsof runs, it doesn't show).

I think your best bet would be fernLightning's fseventer.app. It's "nagware", and allows you to watch (graphically) the fsevents API in real-time.

查看更多
做个烂人
5楼-- · 2019-03-08 00:41

Another option is Sloth. It's a free, open source GUI for LSOF that others have mentioned.

查看更多
倾城 Initia
6楼-- · 2019-03-08 00:43

But I spent 2 minutes Googling and found your answer here.

$ lsof | grep [whatever]

Where [whatever] is replaced with the filename you're looking for. With this, you can see which program is desperately holding onto your about-to-be-trashed file. Once you exit that program, your trash will empty.

查看更多
登录 后发表回答