Come utilizzare il comando lsof in Linux per elencare i file aperti

Open Featured
⏱️ 5 min read

La cosa buona di Linux è che puoi facilmente visualizzare e gestire tutto, dal processo di avvio all’installazione dei pacchetti software. Qui discutiamo di come utilizzare il comando lsof in Linux per visualizzare i file aperti e i processi che li utilizzano. Sapere come visualizzare questo può aiutarti a capire come funziona il sistema e persino a intraprendere le azioni necessarie per processi specifici.

Comando Lsof

Per visualizzare i file aperti e gli utenti o i processi responsabili di essi, utilizziamo il lsof utilità. Per impostazione predefinita, lsof è preinstallato nella maggior parte delle distribuzioni.

Tuttavia, se non lo hai installato, puoi utilizzare il gestore pacchetti per installarlo sul tuo sistema.

Debian/Ubuntu

Su Debian, esegui il comando:

sudo apt-get install lsof

Arco/Manjaro

Su Manjaro e altre distribuzioni basate su Arch, usa pacman eseguendo il comando:

sudo pacman -S lsof

CentOS/REHL/Fedora

Per CentOS e la famiglia REHL, puoi usare dnf:

sudo dnf install lsof

Usa il comando lsof per elencare i file aperti per un processo Linux

Come la maggior parte dei comandi Linux, l’utilità lsof è incredibilmente semplice da usare. Inizia digitando il comando lsof:

sudo lsof

Dopo aver eseguito il comando sopra, lsof dovrebbe restituire informazioni sui file aperti nel sistema.

COMMAND PID TID TASKCMD USER   FD      TYPE             DEVICE SIZE/OFF            NODE NAME
init      1             root  cwd       DIR               8,48     4096               2 /
init      1             root  rtd       DIR               8,48     4096               2 /
init      1             root  txt       REG               0,19   632048 281474976743906 /init
init      1             root    0u      CHR                1,3      0t0           15362 /dev/null
init      1             root    1u      CHR                1,3      0t0           15362 /dev/null
init      1             root    2u      CHR                1,3      0t0           15362 /dev/null
init      1             root    3w      CHR               1,11      0t0           15367 /dev/kmsg
init      1             root    4u     sock                0,8      0t0           22689 protocol: AF_VSOCK
init      1             root    5r      REG                0,4        0      4026532185 mnt
init      1             root    6r      REG                0,4        0      4026532201 mnt
init      1             root    7r      DIR               8,48     4096             240 /home/cap
init      1             root    8u      DIR               8,48     4096               2 /
init      1             root    9u     sock                0,8      0t0           21853 protocol: AF_VSOCK

Nota: se hai i privilegi sudo, esegui il comando con sudo per evitare errori di “autorizzazione negata” su file specifici.

Come mostrato nell’output sopra, l’output lsof ha le seguenti colonne:

Colonna Rappresentazione
Comando Mostra il nome del processo utilizzando il file di destinazione.
PID L’identificatore univoco per il processo che utilizza il file.
TID La colonna mostra l’identificatore del thread.
TASKCMD Il nome del comando dell’attività.
UTENTE Nome utente o UID dell’utente che esegue il processo.
FD Descrittore di file del file e delle modalità.
GENERE Nodo associato al file di destinazione.
DISPOSITIVO Numero del dispositivo separato da virgole.
TAGLIA/SPENTO Dimensione del file in byte della dimensione dell’offset del file
NODO Valore dell’inode del file locale. Puoi usare il comando stat per mostrare inode informazioni per il file.
NOME Punto di montaggio del file.

Ora che hai capito cosa rappresentano i contenuti della stampa del comando lsof, usiamo il comando per filtrare informazioni specifiche.

Come filtrare per processo specifico

Per filtrare solo file specifici aperti dal processo specifico, possiamo utilizzare il nome del processo o il valore PID.

Ad esempio, per mostrare i file utilizzati dal processo Firefox, possiamo usare il comando:

sudo lsof -c firefox
Lsof C Firefox

Il comando mostrerà tutti i file aperti dal processo Firefox.

Per filtrare per ID processo, possiamo usare il -p opzione e passare l’ID del processo. Puoi usare il top comando per ottenere l’ID del processo di destinazione.

Ad esempio, per ottenere il PID del processo Firefox, possiamo utilizzare il comando:

sudo ps aux | grep firefox

Una volta ottenuto il PID del processo di destinazione, utilizzare lsof per mostrare i file aperti:

sudo lsof -p 2121
Lsof Pid

Il comando precedente stamperà i file aperti dal processo con il PID specificato.

Come filtrare per un utente specifico

Per visualizzare solo i file aperti da un utente specifico, possiamo utilizzare il -u bandiera. Ad esempio, per filtrare per l’utente Debian, utilizzare il comando:

sudo lsof -u debian
Lsof U Debian

Come filtrare per un file specifico

Supponiamo di voler conoscere solo il processo e l’utente che ha aperto un file specifico. Per fare ciò, passa il nome del file a lsof:

sudo lsof /bin/sleep
Lsof Sleep

Quanto sopra filtrerà solo per il file specifico e restituirà le informazioni correlate, inclusi l’utente, l’ID processo e altro.

Avvolgendo

In questo semplice tutorial, abbiamo discusso di come interrogare il sistema per informazioni sui file aperti usando il comando lsof in Linux. Ecco alcuni comandi aggiuntivi per elencare il contenuto di una directory nel terminale.

Join our Newsletter and receive offers and updates! ✅

0 0 votes
Article Rating
Avatar di Routech

Routech

Routech is a website that provides technology news, reviews and tips. It covers a wide range of topics including smartphones, laptops, tablets, gaming, gadgets, software, internet and more. The website is updated daily with new articles and videos, and also has a forum where users can discuss technology-related topics.

Potrebbero interessarti anche...

Subscribe
Notificami
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x