GNU/Linux >> Linux Esercitazione >  >> Linux

Linux lsof Command Tutorial per principianti (15 esempi)

Il lsof comando in Linux mostra nel suo output le informazioni sui file che vengono aperti dai processi. 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 20.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 tutti i processi), il comando lsof ti consente di farlo. Un file aperto potrebbe essere un file normale o una directory, una libreria, un file speciale o un dispositivo a blocchi, un file speciale di caratteri, un riferimento di testo in esecuzione o anche 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:

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, esegui il comando lsof senza argomenti:

lsof

Ad esempio, ecco lo screengrab di una parte dell'output del comando precedente 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 del comando.

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

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

lsof -u [nome utente]

Ad 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 il -i opzione della riga di comando. Ad esempio, se lo desideri, puoi visualizzare i file IPv4 e IPv6 separatamente. Per IPv4, esegui il comando seguente:

lsof -i 4

Ad esempio:

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

lsof -i 6

Ad esempio:

lsof -i 6

4. Come elencare tutti i file per nome dell'applicazione

L'opzione della riga di comando -c ti consente di ottenere tutti i file aperti 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 il -p opzione della riga di comando.

lsof -p [PID]

Ad esempio:

lsof -p 856

Andando avanti, puoi anche escludere PID specifici nell'output aggiungendo il ^ simbolo davanti a loro. Per escludere un PID specifico, puoi eseguire il comando seguente:

lsof -p [^PID]

Ad 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 usando il -t opzione della riga di comando.

$ lsof -t [file-name]

Ad 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 il +D opzione della riga di comando.

$ lsof +D [percorso-directory]

Ad esempio:

$ lsof +D  /usr/lib/locale

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

Ciò è possibile utilizzando il -i opzione della riga di comando che abbiamo descritto 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 in /etc/services file. Esempio per verificare quale app è in ascolto sulla porta HTTPS (443):

$ lsof -i :https

Risultato:

Gli esempi precedenti verificheranno 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à ti consente anche 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 comando seguente:

$ 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 comando seguente:

$ lsof -i udp

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

12. Come creare lsof list PID padre dei processi

C'è anche un'opzione che obbliga lsof a elencare il numero di identificazione del processo principale (PPID) nell'output. L'opzione in questione è -R .

$ lsof -R

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

$ lsof -p [PID] -R

Ad esempio:

$ lsof -p 3 -R

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

Utilizzando 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 tutte le 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 offre una pletora 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 dello strumento per saperne di più. Oh, e in caso di dubbi e domande, lascia un commento qui sotto.


Linux
  1. Tutorial sul comando cd di Linux per principianti (8 esempi)

  2. Tutorial comando Linux comm per principianti (5 esempi)

  3. Linux df Command Tutorial per principianti (8 esempi)

  4. Tutorial sul comando della data di Linux per principianti (8 esempi)

  5. Tutorial sul comando del nome host Linux per principianti (5 esempi)

Linux who Command Tutorial per principianti (8 esempi)

Linux nl Command Tutorial per principianti (7 esempi)

Tutorial sui comandi Linux nm per principianti (10 esempi)

Esercitazione sui comandi OD Linux per principianti (6 esempi)

Linux w Command Tutorial per principianti (5 esempi)

Tutorial sui comandi Linux ss per principianti (8 esempi)