Upptäck vilka appar eller processer som samverkar med en fil i Mac OS X

Med kommandot lsof kan vi ta reda på exakt vilken process eller applikation som använder en angiven fil vid det angivna tillfället. Det här liknar kommandot opensnoop, men istället för att titta på ändringarna i en fil över tiden kan lsof ge oss en ögonblicksbild av just nu, vilket kan vara till hjälp för felsökningsändamål.

lsof /path/to/filename

För ett exempel, för att se vad som interagerar med /var/log/system.log pekar vi på den filen:

$ 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

I det här fallet är appen med system.log "Console". Återigen visar detta oss en ögonblicksbild när lsof-kommandot kördes, men genom att använda det tidigare nämnda kommandot opensnoop kan du istället följa vilka processer som använder den filen i realtid:

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

Ovanstående skulle resultera i att se något så här:
$ 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

I det här fallet ser du under "COMM" för processnamnen, eller PID för process-id.

Kom ihåg att du kan gå motsatt sätt med opensnoop också, och visa alla filer som en app använder genom att peka på kommandot i en applikation eller process, snarare än en fil.