Come scoprire quali processi stanno usando uno specifico file – Guida

martedì, 17 gennaio 2012 di Fabrizio Degni in Guide SlideToMac, Mac Pro, MacBook Pro, Tutorials

lsof e opensnoop sono due comandi da Terminale per avere istantanea e storico delle processi sui file.

Quante volte sarà accaduto che andando a cancellare un file o ad aprirlo dopo averlo “maneggiato” per vari software il sistema abbia restituito il messaggio poco gradito che “la risorsa è occupata” o gestita da altro programma? Sicuramente almeno un volta nella vita e dinanzi a tali messaggi, non avendo alcun programma parte tantomeno sul file in oggetto, monta il desiderio di sapere chi stia bloccando il file in modo tale da evitare o la disconnessione o addirittura il riavvio del sistema.

In nostro aiuto arriva la console Terminale, con due comandi che non solo ci permettono di scoprire altre funzionalità da shell, ma anche, soprattutto, di rispondere all’amletico quesito. I comandi sono: lsofopensnoop.

Entrambi svolgo la medesima funzione ma con una differenza: lsof ci offre un’istantanea di chi stia usando la risorsa, nell’instante dell’invocazione del comando mentre opensnoop una fotografia dei processi che usano il file, indipendentemente o meno se nel momento della nostra richiesta, lo stiano effettivamente modificando.

La sintassi è identica per entrambi (comando /percorso/nomefile.estensione) , che chiariamo con un esempio:

  • Digitando da console (lsof /var/log /system.log) otteniamo come risultato:
  • COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    Console 84281 Will 8r REG 14,2 140239 71929128 /private/var/log/system.log

da cui si evince che al momento system.log è utilizzato dal processo Console (dove stiamo scrivendo…)

Per quanto concerne invece il comando opensnoop, invocato sul medesimo file:

  • Digitando da console: sudo opensnoop -f /var/log/system.log
  • 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

mostra come il file oltre al processo console (nella colonna COMM) ha interazione anche con altri processi. Abbiamo aggiunto il parametro -f poiché diversamente da lsof è necessario indicare che quanto a seguire sia il percorso dove allocato il file.

 

[ Fonte: osXdaily ]

 

Per restare sempre aggiornato sul tema di questo articolo, puoi seguirci su Twitter, aggiungerci su Facebook o Google+ e leggere i nostri articoli via RSS.

Unisciti alla nostra community su Facebook! Clicca Mi Piace!
L'utilizzo del contenuto di questo articolo è soggetto alle condizioni della Licenza Creative Commons. Sono consentite la distribuzione, la riproduzione e la realizzazione di opere derivate per fini non commerciali, purché venga citata la fonte.
  • Leviatano90

    Ragazzi ho una domanda OT per voi esperti del settore. Vorrei togliere l’account “ospite” dalla finestra di login, ma stavo leggendo che togliendolo non funziona più il “Trova il mio mac”, è vero? Ma la rete wifi non è attiva anche nella finestra di login? È vero che basta il DVD di Lion per formattare il mac dalla finestra di login? Grazie per la risposta.

  • Anonimo

    ragazzi continuate con queste chicche 

  • Pingback: Come scoprire quali processi stanno usando uno specifico file

  • BM

    Tutte le volte che cerco di cancellare un file video dopo averlo visto con VLC, dice che non posso perché il file è in uso (anche se VLC è chiuso).
    L’unica soluzione che ho trovato è svuotare il cestino in modalità sicura, ma ci mette qualche minuto…
    Ho provato ad eseguire i comandi scritti in questo articolo, ma con lsof non succede niente, e con opensnoop -f ha dato un errore che ora purtroppo non ricordo… :|
    Aiuto? :)