Entdecken Sie, welche Apps oder Prozesse in Mac OS X mit einer Datei interagieren

Mit dem Befehl lsof können wir genau herausfinden, welcher Prozess oder welche Anwendung eine bestimmte Datei zu diesem Zeitpunkt verwendet. Dies ähnelt dem Befehl opensnoop, aber anstatt die Änderungen an einer Datei im Laufe der Zeit zu beobachten, kann lsof uns einen Schnappschuss von diesem Moment geben, der für die Fehlerbehebung hilfreich sein kann.

lsof /path/to/filename

Um zum Beispiel zu sehen, was mit /var/log/system.log interagiert, zeigen wir auf diese Datei:

$ 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

In diesem Fall ist die App, die system.log verwendet, "Konsole". Auch dies zeigt uns eine Momentaufnahme in dem Moment, in dem der Befehl lsof ausgeführt wurde, aber indem Sie den zuvor erwähnten Befehl opensnoop verwenden, können Sie verfolgen, welche Prozesse diese Datei in Echtzeit verwenden:

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

Das obige würde dazu führen, dass etwas wie folgt aussieht:
$ 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

In diesem Fall suchen Sie unter "COMM" nach den Prozessnamen oder PID nach der Prozess-ID.

Denken Sie daran, dass Sie den umgekehrten Weg auch mit opensnoop gehen können, und zeigen Sie alle Dateien an, die eine App verwendet, indem Sie den Befehl auf eine Anwendung oder einen Prozess und nicht auf eine Datei richten.