Ricerca nel sito web

Linux lsof Command Tutorial per principianti (15 esempi)


Su questa pagina

  1. Informazioni su lsof Command
  2. Installa il comando lsof di Linux
  3. 1. Come elencare tutti i file aperti
  4. 2. Come elencare i file aperti da processi appartenenti a un utente specifico
  5. 4. Come elencare tutti i file in base al nome dell'applicazione
  6. 5. Come elencare i file specifici di un processo
  7. 6. Come elencare gli ID dei processi che hanno aperto un particolare file
  8. 7. Come elencare tutti i file aperti in una directory
  9. 8. Come elencare tutti i file di rete Internet e x.25 (HP-UX).
  10. 9. Scopri quale programma sta utilizzando una porta
  11. 10. Come elencare i file aperti in base all'intervallo di porte
  12. 11. Come elencare i file aperti in base al tipo di connessione (TCP o UDP)
  13. 12. Come creare lsof list Parent PID dei processi
  14. 13. Come trovare l'attività di rete per utente
  15. 14. Elenca tutti i file mappati in memoria
  16. 15. Elenca tutti i file NFS
  17. Conclusione

Il comando Linux lsof mostra nel suo output informazioni sui file aperti da un processo. In questo articolo, discuteremo lo strumento Linux lsof utilizzando 15 esempi di facile comprensione. Tieni presente che tutti gli esempi menzionati in questo tutorial sono stati testati su Ubuntu 22.04 LTS, ma funzioneranno anche su altre distribuzioni Linux come Debian, Fedora e CentOS.

Informazioni su lsof Command

Se vuoi vedere rapidamente il nome dei file che sono stati aperti da un particolare processo (o da tutti i processi), il comando lsof ti consente di farlo. Un file aperto può essere un normale file o una directory, una libreria, un file speciale o un dispositivo a blocchi, un file di caratteri speciali, un riferimento di testo in esecuzione o persino un flusso o un file di rete. Puoi anche elencare i processi per numero di porta. Se non hai effettuato l'accesso come utente root, potresti dover anteporre sudo ai comandi.

Installa il comando lsof di Linux

La maggior parte delle distribuzioni Linux viene fornita con lsof preinstallato. Se non è ancora installato sul tuo sistema, usa i seguenti comandi per installare lsof:

Su Ubuntu e Debian:

$ sudo apt install lsof

Ond CentOS e Fedora:

$ dnf install lsof

1. Come elencare tutti i file aperti

Per elencare tutti i file aperti, eseguire il comando lsof senza argomenti:

lsof

Ad esempio, ecco lo screengrab di una parte dell'output che il comando precedente ha prodotto sul mio sistema:

La prima colonna rappresenta il processo mentre l'ultima colonna contiene il nome del file. Per i dettagli su tutte le colonne, vai alla pagina man dei comandi.

2. Come elencare i file aperti da processi appartenenti a un utente specifico

Lo strumento consente inoltre di elencare i file aperti da processi appartenenti a un utente specifico. È possibile accedere a questa funzione utilizzando l'opzione della riga di comando -u.

lsof -u [nome utente]

Per esempio:

lsof -u amministratore

3. Come elencare i file in base al loro indirizzo Internet

Lo strumento ti consente di elencare i file in base al loro indirizzo Internet. Questo può essere fatto usando l'opzione della riga di comando -i. Ad esempio, se lo desideri, puoi visualizzare separatamente i file IPv4 e IPv6. Per IPv4, eseguire il seguente comando:

lsof -i 4

Per esempio:

Allo stesso modo, per IPv6, esegui il seguente comando:

lsof -i 6

Per esempio:

lsof -i 6

4. Come elencare tutti i file in base al nome dell'applicazione

L'opzione della riga di comando -c consente di aprire tutti i file in base al nome del programma.

$ lsof -c apache

Non è necessario utilizzare il nome completo del programma poiché vengono visualizzati tutti i programmi che iniziano con la parola apache. Quindi, nel nostro caso, elencherà tutti i processi dell'applicazione apache2.

L'opzione -c è fondamentalmente solo una scorciatoia per i due comandi:

$ lsof | grep apache

5. Come elencare i file specifici di un processo

Lo strumento consente inoltre di visualizzare i file aperti in base ai numeri di identificazione del processo (PID). Questo può essere fatto usando l'opzione della riga di comando -p.

lsof -p [PID]

Per esempio:

lsof -p 856

Andando avanti, puoi anche escludere PID specifici nell'output aggiungendo il simbolo ^prima di essi. Per escludere un PID specifico, puoi eseguire il seguente comando:

lsof -p [^PID]

Per esempio:

lsof -p ^1

Come puoi vedere nello screenshot sopra, il processo con id 1 è escluso dall'elenco.

6. Come elencare gli ID dei processi che hanno aperto un particolare file

Lo strumento consente di elencare gli ID dei processi che hanno aperto un determinato file. Questo può essere fatto utilizzando l'opzione della riga di comando -t.

$ lsof -t [file-name]

Per esempio:

$ lsof -t /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0

7. Come elencare tutti i file aperti in una directory

Se lo desideri, puoi anche fare in modo che lsof cerchi tutte le istanze aperte di una directory (inclusi tutti i file e le directory che contiene). È possibile accedere a questa funzione utilizzando l'opzione della riga di comando +D.

$lsof +D [percorso-directory]

Per esempio:

$lsof +D  /usr/lib/locale

8. Come elencare tutti i file di rete Internet e x.25 (HP-UX).

Ciò è possibile utilizzando l'opzione della riga di comando -i descritta in precedenza. Solo che devi usarlo senza argomenti.

$lsof -i

9. Scopri quale programma sta utilizzando una porta

L'opzione -i del comando consente di trovare un processo o un'applicazione che ascolta un numero di porta specifico. Nell'esempio seguente, ho verificato quale programma utilizza la porta 80.

$ lsof -i :80

Invece del numero di porta, puoi usare il nome del servizio come elencato nel file /etc/services. Esempio per verificare quale app è in ascolto sulla porta HTTPS (443):

$ lsof -i :https

Risultato:

Gli esempi precedenti controlleranno sia TCP che UDP. Se desideri controllare solo TCP o UDP, anteponi la parola tcp o udp. Ad esempio, quale applicazione utilizza la porta 25 TCP:

$ lsof -i tcp:25

o quale app utilizza la porta UDP 53:

$ lsof -i udp:53

10. Come elencare i file aperti in base all'intervallo di porte

L'utilità consente inoltre di elencare i file aperti in base a una porta o a un intervallo di porte specifico. Ad esempio, per visualizzare i file aperti per la porta 1-1024, utilizzare il seguente comando:

$lsof -i :1-1024

11. Come elencare i file aperti in base al tipo di connessione (TCP o UDP)

Lo strumento consente di elencare i file in base al tipo di connessione. Ad esempio, per file specifici UDP, utilizzare il seguente comando:

$lsof -i udp

Allo stesso modo, puoi fare in modo che lsof visualizzi file specifici per TCP.

12. Come creare lsof list Parent PID dei processi

C'è anche un'opzione che obbliga lsof a elencare il numero PPID (Parent Process IDentification) nell'output. L'opzione in questione è -R.

$ lsof -R

Per ottenere informazioni PPID per un PID specifico, puoi eseguire il seguente comando:

$ lsof -p [PID] -R

Per esempio:

$ lsof -p 3 -R

13. Come trovare l'attività di rete per utente

Usando una combinazione delle opzioni della riga di comando -i e -u, possiamo cercare tutte le connessioni di rete di un utente Linux. Questo può essere utile se si ispeziona un sistema che potrebbe essere stato violato. In questo esempio, controlliamo tutta l'attività di rete dell'utente www-data:

$ lsof -a -i -u www-data

14. Elenca tutti i file mappati in memoria

Questo comando elenca tutti i file mappati in memoria su Linux.

$ lsof -d mem

15. Elenca tutti i file NFS

L'opzione -N mostra un elenco di tutti i file NFS (Network File System).

$lsof -N

Conclusione

Sebbene lsof offra una miriade di opzioni, quelle che abbiamo discusso qui dovrebbero essere sufficienti per iniziare. Una volta che hai finito di esercitarti con questi, vai alla pagina man degli strumenti per saperne di più. Oh, e in caso di dubbi e domande, lascia un commento qui sotto.