Scopri quali app o processi interagiscono con un file in Mac OS X

Usando il comando lsof, possiamo scoprire esattamente quale processo o applicazione sta usando un file specificato in quel dato momento. Questo è simile al comando opensnoop, ma piuttosto che osservare le modifiche a un file nel tempo, lsof può darci un'istantanea di questo momento, che può essere utile per la risoluzione dei problemi.

lsof /path/to/filename

Per un esempio, per vedere a cosa sta interagendo con /var/log/system.log lo puntiamo su quel file:

$ 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 questo caso l'app che usa system.log è "Console". Di nuovo, questo ci mostra un'istantanea nel momento in cui è stato eseguito il comando lsof, ma usando il comando opensnoop menzionato in precedenza puoi invece seguire i processi che usano quel file in tempo reale:

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

Quanto sopra risulterebbe nel vedere qualcosa di simile a questo:
$ 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 questo caso stai cercando in "COMM" per i nomi dei processi, o PID per l'id del processo.

Ricorda che puoi andare in modo opposto anche con opensnoop e mostrare tutti i file utilizzati da un'applicazione puntando il comando su un'applicazione o un processo, piuttosto che su un file.