发现哪些应用程序或进程正在与 Mac OS X 中的文件进行交互

观看哪些应用正在使用使用 lsof 或 opensnoop 文件

使用 lsof 命令,我们可以准确地找出在给定时刻哪个进程或应用程序正在使用指定的文件。这类似于 opensnoop 命令,但不是监视随着时间的推移对文件的更改,lsof 可以为我们提供这一刻的快照,这有助于故障排除。

lsof /path/to/filename

例如,要查看与 /var/log/system.log 交互的内容,我们将其指向该文件:

$ lsof /var/log/system.log
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Console 84281 Will 8r REG 14,2 140239 71929128 /private/var/日志/system.log

在这种情况下,使用 system.log 的应用是“控制台”。同样,这向我们展示了执行 lsof 命令时的快照,但是通过使用前面提到的 opensnoop 命令,您可以实时跟踪哪些进程使用该文件:

sudo opensnoop -f /var/log/system.log

以上会导致看到类似这样的内容:
<代码>$ sudo opensnoop -f /var/log/system.log
密码:
UID PID COMM FD PATH
501 84358 cat 3 /var/log/system.log
501 45411 控制台 3 /var/log/system.log
0 15 syslogd 16 /var/log/system.log

在这种情况下,您在“COMM”下查找进程名称,或在 PID 下查找进程 ID。

请记住,您也可以使用 opensnoop 走相反的路,显示所有应用程序正在使用的文件 通过将命令指向应用程序或进程而不是文件。