Ontdek welke apps of processen werken met een bestand in Mac OS X

Met behulp van de opdracht lsof kunnen we precies uitvinden welk proces of toepassing op dat moment een opgegeven bestand gebruikt. Dit lijkt op de opdracht opensnoop, maar in plaats van de wijzigingen in een bestand in de loop van de tijd te bekijken, kan lsof ons een momentopname van dit moment geven, wat handig kan zijn voor het oplossen van problemen.

lsof /path/to/filename

Om bijvoorbeeld te zien wat er interageert met /var/log/system.log verwijzen we naar dat bestand:

$ 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 dit geval is de app die system.log gebruikt "Console". Nogmaals, dit toont ons een momentopname op het moment dat het lsof-commando werd uitgevoerd, maar door het eerder genoemde opensnoop-commando te gebruiken, kun je in plaats daarvan volgen welke processen dat bestand in realtime gebruiken:

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

Het bovenstaande zou resulteren in het zien van zoiets als dit:
$ 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 dit geval kijkt u onder "COMM" voor de procesnamen of PID voor de proces-ID.

Vergeet niet dat u ook met opennoop de tegenovergestelde richting kunt inslaan en alle bestanden kunt weergeven die een app gebruikt door de opdracht op een toepassing of proces te richten in plaats van op een bestand.