Gestione delle Risorse Occupate in Linux

Spesso capita di non essere in grado di cancellare o modificare un file perché è già in uso da parte di un altro utente o altra applicazione. Linux, in questi casi, offre un comodo strumento, il comando lsof che per l’appunto consente di scoprire chi occupa un determinato file.

Se difatti scriviamo lsof /sbin/agetty otteniamo il risultato nell’immagine qui sopra, ovviamente questo succede nella mia distribuzione che ha solo la shell e quindi ridotta all’osso. In particolare vediamo che lsof visualizza un elenco: il comando dal file preso come argomento, il PID ( numero identificativo ) del processo, l’utente che lo sta utilizzando, il descrittore ed il tipo di file, il nodo, la grandezza ed altri dati. Se il comando non dovesse dare nessun output, allora significherebbe che il file non è utilizzato da alcun processo. Senza argomento lsof permette di mostrare tutti i file utilizzati nel sistema e dato che questo elenco è molto lungo, possiamo redirigere l’output su un file lsof > file_utilizzati.txt. Occorre ricordare che in un sistema GNU Linux tutto è un file, pipe, socket, directory, device e via dicendo; quindi lsof è uno strumento molto utile per ottenere informazioni dettagliate relative al proprio sistema. In un ambiente multitasking come GNU Linux ci sono poche applicazioni mono processo, ovvero che girano da sole in modo indipendente da tutte le altre. Spesso sono diversi i processi collegati tra loro che concorrono a rendere possibile l’esecuzione di un’applicazione. In questi casi, quando si decide di terminare o “killare” ( a riga di comando per terminare un processo si utilizza il comando kill, al quale dobbiamo dare il PID del processo da terminare, ecco perché si utilizza anche questo termine ) un processo anche con strumenti con interfaccia grafica, ci si può trovare di fronte all’impossibilità di “ucciderlo” definitivamente, qualora rimanga in attesa di sincronizzazione con altri processi ad esso collegati. Solitamente tale sincronizzazione si riferisce al processo padre, anche se non sempre tale gerarchia viene rispettata.
Ad ogni modo, quando abbiamo un processo che non può essere terminato, abbiamo lo stato di “zombie” e non potrà essere terminato fino a quando avremo i processi padre in esecuzione. Esiste un comando molto potente per vedere la disposizione dei processi figli nei confronti dei padri, pstree che mostra una visione ad albero di tutte le dipendenze dei processi in esecuzione, rendendo semplice quindi il giusto ordine degli stessi da terminare.

E’ anche possibile visionare un solo sotto insieme di informazioni inserendo come opzione del comando il nome dell’utente del quale vogliamo vedere i processi associati in esecuzione oppure anche il PID del singolo processo. A questo punto il comando kill potrà essere più mirato. Terminando vi informo, e come potete anche vedere dall’immagine più sopra, che il padre di tutti i processi è init, se doveste terminare un processo dipendente da questo occorre riavviare il sistema.
Se aveste dei problemi con Linux ricordo a tutti che abbiamo un forum su questo sistema operativo nel quale rispondiamo a tutte le vostre domande. Alla prossima!

Informazioni su Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.
Questa voce è stata pubblicata in Linux. Contrassegna il permalink.