Come capire chi ha aperto un certo file?

Se un file non è modificabile o cancellabile, “resource busy”, può essere complesso capire quale applicazione sta accedendo al file.

Per capire di quale processo mantiene busy un file, ci sono due comandi per il Terminale di OS X che vengono in aiuto: fuser e lsof

Un esempio per fuser:

  1. Lanciare TextEdit
  2. Aprire un Terminal
  3. Digitare: fuser -fu /Applications/TextEdit.app/Contents/MacOS/TextEdit
  4. Risulterà il proprio utente, ad esempio: /Applications/TextEdit.app/Contents/MacOS/TextEdit: 1054(marco)

Un esempio per lsof:

  1. Lanciare TextEdit
  2. Aprire un Terminal
  3. Digitare: lsof /Applications/TextEdit.app/Contents/MacOS/TextEdit
  4. Il risultato sarà una cosa come:
    	COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
    	TextEdit 1054 marco  txt    REG   14,2   267744 1072129 /Applications/TextEdit.app/Contents/MacOS/TextEdit

lsof ha moltissime opzioni, ad esempio con lo switch “-i” permette di verificare le porte TCP aperte (non solo i regular files).

Nota:

Ovviamente al posto di “/Applications/TextEdit.app/Contents/MacOS/TextEdit” va messo il path al file che si intende verificare.
Con lsof è anche possibile non specificare alcun file e poi utilizzare “grep” in pipe, cosa particolarmente utile quando si esegue “lsof -i”.

[ Home | Elenco delle FAQ | Risorse | Feed RSS ]