Come capire chi e che programma ha aperto o sta usando un certo file?
Argomenti: TerminaleInformazioni tecnicheUtility
Author: Marco Balestra
Se un file non è modificabile o cancellabile, “resource busy”, file in uso e quindi bloccato, può essere complesso capire quale applicazione o processo stia accedendo al file tenendolo aperto.
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
fuser
- Lanciare TextEdit
- Aprire un Terminal
- Digitare:
fuser -fu /Applications/TextEdit.app/Contents/MacOS/TextEdit
Risulterà il proprio utente, ad esempio:
/Applications/TextEdit.app/Contents/MacOS/TextEdit: 1054(marco)
lsof
- Lanciare TextEdit
- Aprire un Terminal
- Digitare:
lsof /Applications/TextEdit.app/Contents/MacOS/TextEdit
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
”.