Opdag, hvilke apps eller processer der interagerer med en fil i Mac OS X

Ved hjælp af kommandoen lsof kan vi finde ud af, præcis hvilken proces eller applikation der bruger en bestemt fil på det givne tidspunkt. Dette ligner kommandoen opensnoop, men i stedet for at se ændringerne i en fil over tid kan lsof give os et øjebliksbillede af dette øjeblik, hvilket kan være nyttigt til fejlfinding.

lsof /path/to/filename

For et eksempel, for at se, hvad der interagerer med /var/log/system.log, peger vi på den fil:

$ 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 dette tilfælde er appen ved hjælp af system.log "Console". Igen viser dette os et øjebliksbillede, da kommandoen lsof blev udført, men ved at bruge den tidligere nævnte opensnoop kommando i stedet kan du følge hvilke processer der bruger den pågældende fil i realtid:

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

Ovenstående ville resultere i at se noget som dette:
$ 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 dette tilfælde ser du under "COMM" for procesnavne eller PID for proces id.

Husk at du også kan gå modsat med opensnoop og vise alle filer, som en app bruger ved at pege på kommandoen ved et program eller en proces i stedet for en fil.