TAGS CLOUD
Incrementa dimensioniDecrementa dimensioni
Scoprire chi o cosa utilizza una risorsa
Sappiamo tutti che quando un file è in uso da un qualsiasi programma non è possibile smontare l’hard disk o la partizione che lo contiene. La stessa cosa accade per qualsiasi altro tipo di memoria: penne USB, CD, DVD, memory card e così via). Questo comportamento serve per evitare la perdita di dati dovuta alla “rimozione” improvvisa del dispositivo di memorizzazione. Purtroppo, però, in alcuni casi, questo semplice sistema di protezione può creare qualche problema. Ad esempio, può succedere di ritrovarsi con partizioni che non si smontano, o ancora CD e DVD che il PC non riesce ad espellere. Certo, è sempre possibile forzare la rimozione del supporto, ma prima di farlo è bene terminare tutti i programmi che bloccano la risorsa, in pratica quelli che in un modo e nell’altro ancora la utilizzano.
La ricerca del “colpevole” non è sempre facile, anche perché basta un programma bloccato ma non più visibile che accede a un file o anche la stessa shell che si trova proprio in una directory presente nel supporto di memorizzazione perché il sistema rifiuti di smontare il dispositivo restituendo l’errore seguente:

umount: /media/disk failed:
 device is busy
In questi casi, l’unico modo per individuare il processo che occupa la risorsa e la blocca è usare il comando fuser. Utilizzando questo semplice programma è possibile, in qualsiasi momento, individuare il PID dei processi che utilizzano un determinato file, una directory o l’intero dispositivo. Ad esempio, per scoprire quale programma sta utilizzando un file, basta eseguire il comando fuser -v nome_del_ file. Ovviamente, può trattarsi anche di una directory, così, per controllare l’accesso ad una pendrive USB montata nella cartella / media/disk è sufficiente usare il comando fuser -um /media/disk. In questo modo, otterremo l’elenco di tutti i processi che stanno usando la penna USB e, utilizzando lo switch -u, anche i relativi utenti che li hanno eseguiti. Inoltre, poiché la directory viene identificata come mount point dalla direttiva -m, tutte le sotto cartelle e i file in essa contenuti saranno sottoposti a verifica da parte del programma. A questo punto, individuare i singoli processi che “bloccano” la rimozione della risorsa diventa facilissimo, ma si può andare oltre e chiedere al programma di chiuderli automaticamente. Questo può essere fatto utilizzando lo switch -k (kill). Ad esempio, per terminare tutti i processi che stanno accedendo al Cd-Rom (bloccando di fatto l’esecuzione del comando umount), basta eseguire fuser -kim /media/cdrom. Ovviamente, il comando va modificato in base alla configurazione del proprio sistema, dove la directory di mount potrebbe essere diversa. Inoltre, aggiungendo lo switch -i, come in questo caso, verrà chiesta conferma prima di terminare ogni singolo processo. È ovvio, che fuser non è in grado di fornire informazioni relative ai file e ai processi per i quali non si dispongono di diritti sufficienti, per cui è necessario, se possibile, eseguirlo come utente root.

Lascia un commento
Tag: comando, fuser, PID, file, switch -k (kill)
Condividi