Macworld San Francisco 2000-The Mac OS X Introduction (Pt.1)
使用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/log/system.log
在这种情况下,使用system.log的应用程序是“控制台”。 同样,这是在执行lsof命令时向我们显示快照,但是通过使用前面提到的opensnoop命令,您可以跟踪哪些进程实时使用该文件:
sudo opensnoop -f /var/log/system.log
以上将导致看到这样的事情: $ sudo opensnoop -f /var/log/system.log
Password:
UID PID COMM FD PATH
501 84358 cat 3 /var/log/system.log
501 45411 console 3 /var/log/system.log
0 15 syslogd 16 /var/log/system.log
在这种情况下,您在“COMM”下查找进程名称,或者查看进程ID的PID。
请记住,您也可以使用与opensnoop相反的方式,并通过将命令指向应用程序或进程而不是文件来显示应用程序正在使用的所有文件。
了解哪些应用程序或进程与mac os x中的文件进行交互
了解在Mac OS X中与文件交互的应用程序或进程