Oppdag hvilke apper eller prosesser som påvirker en fil i Mac OS X

Ved hjelp av kommandoen lsof kan vi finne ut nøyaktig hvilken prosess eller applikasjon som bruker en spesifisert fil på det aktuelle tidspunktet. Dette ligner på opensnoop-kommandoen, men i stedet for å se endringene i en fil over tid kan lsof gi oss et øyeblikksbilde av dette øyeblikk, noe som kan være nyttig for feilsøkingsformål.

lsof /path/to/filename

For eksempel, for å se hva som virker sammen med /var/log/system.log, peker 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 dette tilfellet er appen som bruker system.log "Console". Igjen, dette viser oss et øyeblikksbilde for øyeblikket lsof-kommandoen ble utført, men ved å bruke den tidligere nevnte opensnoop-kommandoen i stedet kan du følge hvilke prosesser som bruker filen i sanntid:

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

Ovennevnte ville resultere i å se noe slikt:
$ 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 tilfellet ser du under "COMM" for prosessnavnene, eller PID for prosess-ID.

Husk at du kan gå motsatt vei med opensnoop også, og vise alle filer en app bruker ved å peke på kommandoen ved et program eller en prosess, i stedet for en fil.