GNU/Linux >> Linux Esercitazione >  >> Linux

7 Esempi di comando lsof in Linux

Immagino che a un certo punto ti sei chiesto se esiste un modo per mostrare i file aperti da un processo o da un utente. La cosa buona è che la risposta a questa domanda è lsof command.

Probabilmente sai già che il comando ls è l'abbreviazione di "list". lsof sta per "Elenca file aperti". Ed è esattamente quello che fa, elencando i file aperti per processi, utenti e ID processo.

Lascia che ti mostri alcuni degli usi più comuni del comando lsof.

esempi di comandi lsof

Se usi il comando lsof senza opzioni e argomenti, elencherà tutti i file aperti da tutti i processi nel sistema.

lsof

L'output dovrebbe essere questo:

COMMAND     PID   TID             USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME

systemd       1                   root  cwd       DIR              252,1      4096          2 /

systemd       1                   root  rtd       DIR              252,1      4096          2 /

systemd       1                   root  txt       REG              252,1   1595792      17384 /lib/systemd/systemd

systemd       1                   root  mem       REG              252,1   1700792       2077 /lib/x86_64-linux-gnu/libm-2.27.so

L'output è per lo più autoesplicativo, ma potresti ancora chiederti delle colonne FD e TYPE.

FD significa descrittore di file. Alcuni dei valori comuni per FD sono:

  • cwd – Directory di lavoro corrente
  • txt – File di testo
  • mem ​​– File mappato in memoria
  • mmap – Dispositivo mappato in memoria
  • NUMERO – Il descrittore di file effettivo. Contiene anche informazioni su quale autorizzazione file è aperto.

TYPE è un gioco da ragazzi. Specifica il tipo di file. Ecco alcuni esempi:

  • REG – File normale
  • DIR – Directory
  • CHR – File speciale di caratteri
  • FIFO – First In First Out

Fidati di me. Non vorresti eseguire il comando lsof senza argomenti.

Perché dico questo? Perché inizierà a inondare il tuo schermo con migliaia di risultati.

Se eseguo il comando lsof su un server Ubuntu e conto il numero di righe con il comando wc, ecco il risultato.

lsof | wc -l
11432

Sì! Giusto. Ci sono oltre undicimila file aperti da vari processi nel sistema.

Non preoccuparti. Il comando lsof è molto utile per il debug perché puoi vedere quali processi aprono quali file e quale file viene aperto da quale processo.

Se non sei loggato come root, l'output del comando lsof sarebbe molto limitato. È una buona idea usare sudo se hai effettuato l'accesso come utente non root.

1. Elenca tutti i processi che hanno aperto un file

Questo è semplice. Devi solo specificare il percorso del file.

lsof <path_to_file>

2. Elenca tutti i file aperti dall'utente

Questo è utile in un ambiente multiutente. Puoi elencare tutti i file aperti da un determinato utente nel modo seguente:

lsof -u <user_name>

Puoi anche specificare più di un utente in questo modo:

lsof -u user1, user2

o così:

lsof -u user1 -u user2

3. Elenca tutti i file aperti in una directory

Se ti stai chiedendo quali dei file sono stati aperti in una determinata directory, puoi usare il comando lsof con l'opzione +D.

lsof +D <path_to_directory>

La ricerca è ricorsiva. Quindi elencherà tutti i file aperti nella directory menzionata e tutte le sue sottodirectory.

4. Elenca tutti i file aperti da un processo

È necessario conoscere l'id del processo (pid) in questo caso. Se conosci l'id del processo, puoi usare l'opzione -p del comando lsof per trovare i file aperti da esso.

lsof -p <pid>

Puoi anche specificare più ID di processo.

lsof -p pid1, pid2, pid3

5. Elenca tutti i file aperti da un comando

Questo è particolarmente utile per il debug. Supponiamo di voler vedere quali file sono usati dal demone http, devi solo specificare il nome del comando (httpd nel nostro esempio).

lsof -c <command>

6. Trova aperto da un utente e un comando o un processo

Puoi combinare opzioni come utente e comando e un processo usando l'opzione –a. Pensalo come l'operatore AND. Questo ti offre un filtro aggiuntivo mentre cerchi di restringere la tua ricerca.

lsof -a -u user_name -c command_name

7. Elenca le connessioni di rete e le porte con il comando lsof

Puoi anche usare il comando lsof per trovare porte aperte o per trovare quale processo sta usando una porta.

Puoi archiviare tutti i tipi di porte aperte con l'opzione -i:

lsof -i

L'output potrebbe essere simile a questo:

lsof -i
 COMMAND     PID            USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
 sshd        920            root    3u  IPv4    20507      0t0  TCP *:ssh (LISTEN)
 sshd        920            root    4u  IPv6    20535      0t0  TCP *:ssh (LISTEN)
 docker-pr  1163            root    4u  IPv6    21687      0t0  TCP *:https (LISTEN)
 docker-pr  1175            root    4u  IPv6    21717      0t0  TCP *:http (LISTEN)
 sshd       7528            root    3u  IPv4 39506588      0t0  TCP testing:ssh->212.91.91.19:58904 (ESTABLISHED)
 systemd-r 10993 systemd-resolve   12u  IPv4 20901990      0t0  UDP localhost:domain 
 systemd-r 10993 systemd-resolve   13u  IPv4 20901991      0t0  TCP localhost:domain (LISTEN)

È inoltre possibile specificare il tipo di connessione di rete. Ad esempio, per elencare tutte le porte TCP aperte, puoi usare:

lsof -i tcp

Per scoprire quale processo sta utilizzando una porta specifica, puoi fornire il numero di porta:

lsof -i :<port_number>

Suggerimento bonus:utilizzo dell'operatore di negazione con lsof

Puoi utilizzare l'operatore di negazione per escludere un utente o un processo mentre usi il comando lsof.

Ad esempio, vuoi elencare tutti i file aperti da un utente diverso da root, usalo in questo modo:

lsof -u ^root

Il comando lsof diventa ancora più utile quando lo usi con il comando grep.

Spero che tu abbia imparato qualcosa di nuovo con questo articolo. Se hai domande o suggerimenti, lascia un commento qui sotto.


Linux
  1. 7 Esempi di comandi Linux df

  2. Esempi di comandi rm in Linux

  3. ps Esempi di comandi in Linux

  4. sa Esempi di comandi in Linux

  5. w Esempi di comandi in Linux

9 esempi di comandi diff in Linux

Comando IP Linux con esempi

15 Comando Linux ps con esempi

lsof Command in Linux (10 esempi)

Esempi di comandi id in Linux

lsof Command in Linux con esempi