GNU/Linux >> Linux Esercitazione >  >> Linux

lsof Command in Linux con esempi

Introduzione

Il lsof comando sta per Elenco file aperti e mostra i file aperti e quale processo li utilizza. Poiché Linux vede ogni oggetto come un file, come dispositivi, directory, ecc., i file aperti non identificati impediscono agli utenti di modificarli.

Inoltre, l'enorme numero di file rende difficile trovare processi dannosi. Il lsof comando aiuta a identificare questi processi in modo da poterli terminare.

Questo articolo spiegherà come utilizzare il Comando lsof in Linux con esempi.

Prerequisiti

  • Accesso al terminale.
  • Privilegi del gruppo Sudo.
  • Privilegi di root per alcuni comandi.

lsof Sintassi dei comandi

Il lsof la sintassi del comando è:

lsof [options]

Nota: Per la maggior parte dei comandi, esegui lsof con sudo per evitare errori di "autorizzazione negata".

ldi opzioni di comando

Il lsof comando ha molte opzioni. La tabella seguente include gli argomenti utilizzati più spesso:

Opzione Descrizione
lsof Elenca tutti i file aperti.
-b Sopprime i blocchi del kernel.
/ [file system] / Mostra i file aperti in un particolare file system.
/dev/tty* Visualizza i file associati al terminale.
-u [username] Stampa tutti i file aperti da un utente.
-u ^[username] Stampa tutti i file aperti da tutti tranne un utente specifico.
-c [process] Elenca tutti i file a cui si accede da un particolare processo.
-p [process ID] Mostra tutti i file aperti associati a un ID processo specifico.
-p ^[process ID] Mostra i file aperti da tutti gli altri PID.
-R Elenca gli ID processo padre.
+D [directory path] Stampa tutti i file aperti in una directory.
-i Visualizza tutti i file a cui si accede dalle connessioni di rete.
-i [IP version number] Filtra i file in base al loro IP.
- i [udp or tcp] Filtra i file aperti in base al tipo di connessione (TCP o UDP).
-i :[port number] Trova i processi in esecuzione su una porta specifica.
-i :[port range] Trova i processi in esecuzione su intervalli di porte specifici.
-t [file name] Elenca gli ID dei processi che hanno avuto accesso a un particolare file.
# kill -9 'lsof -t -u [user] ' Uccide tutti i processi utente.
-d mem Mostra tutti i file mappati in memoria.
[path] | grep deleted Stampa i file eliminati bloccati.
man Apre la pagina man.

ldi esempi di comandi

lsof incorpora diversi argomenti che consentono agli utenti di gestire le attività di amministrazione del sistema e della rete. Di seguito sono descritti i lsof più comuni casi d'uso.

Elenca tutti i file

Se eseguito senza alcuna opzione, lsof elenca tutti i file aperti da qualsiasi processo:

sudo lsof

Il lsof il comando restituisce molti dettagli. Pertanto, reindirizza sempre lsof con less per visualizzare l'output una pagina alla volta.

sudo lsof | less

Per andare in fondo all'elenco, premi Invio o freccia giù . Esci dall'elenco con Q .

Il lsof l'output è costituito da diverse colonne. Tuttavia, non tutte le colonne si applicano a tutti i tipi di file. L'intestazione è simile a questa:

Le colonne predefinite nel lsof output sono:

  • COMANDO - Si riferisce al comando associato al processo che ha aperto il file.
  • PID - Il numero di identificazione del processo che esegue il file.
  • TID - Rappresenta un numero di identificazione dell'attività per il rispettivo processo. È vuoto se un processo, non un'attività, ha aperto il file.
  • TASKCMD - Si riferisce al nome del comando nella prima colonna. Tuttavia, TASKCMD può differire quando un'attività cambia il nome del comando.
  • UTENTE - Nomina l'utente che esegue il processo. La colonna contiene l'ID utente o il nome.
  • FD - È il descrittore di file utilizzato dal processo per associare il file.
  • TIPO - Mostra il tipo di file e il suo numero di identificazione.
  • DISPOSITIVO - Stampa i numeri di dispositivo relativi al file.
  • TAGLIA/OFF - Rappresenta il valore o il file preso durante il runtime (dimensione o offset).
  • NODO - Il numero di nodo del file locale o il numero di inode della directory/directory principale.
  • NOME - Mostra il percorso o il collegamento al file.

Nascondi i blocchi del kernel

Il lsof predefinito l'output include anche i file aperti dal kernel. Per eliminare i blocchi del kernel, esegui lsof con il -b bandiera:

sudo lsof -b

Visualizza i file di un filesystem specifico

Usa il lsof comando per mostrare i file aperti in un particolare file system:

sudo lsof / [file system] /

Ad esempio, per vedere tutti i file aperti nel sys directory, esegui:

sudo lsof / sys/

Stampa i file del terminale

Elenca tutti i file aperti collegati al terminale prendendo di mira il dev directory con lsof :

lsof /dev/tty*

Mostra tutti i file a cui accede un utente

Usa lsof con un -u flag per visualizzare i file aperti da un utente specifico:

sudo lsof -u [username]

Ad esempio:

lsof -u saraz

Il comando elenca i file aperti da saraz .

Per stampare tutti i file aperti da tutti tranne un utente specifico, eseguire:

sudo lsof -u ^[username]

Ad esempio:

lsof -u ^saraz

L'output mostra i file controllati da utenti diversi da saraz .

Visualizza i file utilizzati da un processo

Il -c flag apre tutti i file utilizzati da un processo:

sudo lsof -c [process]

Ad esempio, per elencare i file aperti dal wpa_suppl processo, esegui:

sudo lsof -c wpa_suppl

Un'altra opzione è usare solo una parte del nome del programma:

sudo lsof -c wpa

lsof restituisce tutti i programmi che iniziano con il termine wpa , che include wpa_suppl .

Inoltre, il -c l'opzione fornisce lo stesso output del piping lsof con grep :

sudo lsof | grep wpa_suppl

Stampa file aperti da un PID specifico

Usa il -p opzione per filtrare file specifici in base al numero ID processo (PID). Ad esempio, l'output seguente mostra tutti i file con PID 635.

sudo lsof -p 635

D'altra parte, aggiungi un cursore ^ simbolo per stampare i file aperti da tutti gli altri processi:

sudo lsof -p ^635

Inoltre, combinando lsof con il -R flag aggiunge il numero di identificazione del processo padre (PPID) all'output.

Per ottenere informazioni PPID per un PID specifico, eseguire:

sudo lsof -p [PID] -R

Ad esempio, per ottenere il PPID per il PID 635, digitare:

sudo lsof -p 635 -R

L'output mostra la colonna PPID aggiunta all'intestazione.

Mostra file in una directory

Per vedere tutti i file che sono stati aperti in una directory, usa il seguente comando:

sudo lsof +D [directory path]

Questa opzione ricorre anche alle sottodirectory. Per evitare che si ripetano, usa il +d bandiera.

Mostra i file a cui si accede dalle connessioni di rete

Usa il -i segnala con lsof per verificare quali file vengono aperti da una connessione di rete. Esegui questo comando:

sudo lsof -i

L'esempio sopra stampa i file aperti da una connessione di rete, indipendentemente dal tipo di connessione.

Il -i flag aggiunge molta versatilità a lsof , consentendo agli utenti di filtrare i file in base a criteri diversi. Usa lsof -i [options] a:

  1. Filtra i file in base al loro IP con:
sudo lsof -i [IP version number]

Ad esempio, esegui questo comando per visualizzare solo i file IPv4:

sudo lsof -i 4

Al contrario, stampa solo file IPv6 con:

sudo lsof -i  6
  1. Visualizza solo i file che utilizzano tcp o udp connessione fornendo il tipo di protocollo:
sudo lsof -i [udp or tcp]
  1. Trova i processi in esecuzione su una porta specifica . Questa opzione è utile per verificare quale file impedisce a un'altra app di collegarsi a una porta specifica. Eseguire il comando con il numero di porta o il nome del servizio dalla colonna del nome:
sudo lsof -i :[port number/name]
  1. Stampa tutti i file aperti su intervalli di porte specifici .

Ad esempio, per elencare i file aperti degli intervalli di porte UDP 1-1024, eseguire:

Elenca gli ID dei processi che contengono file aperti

Per visualizzare i PID per i processi che hanno aperto un determinato file, utilizza -t e fornisci il nome del file.

lsof -t [file name]

Chiudi tutti i processi dell'utente

Il -t flag uccide anche tutti i processi di un utente specifico. Ad esempio, per terminare tutti i processi dell'utente notsara , esegui questo comando come root:

# kill -9 'lsof -t -u notsara'

Stampa tutti i file mappati in memoria

lsof stampa quali processi hanno file mappati in memoria. Per mostrare questi processi, esegui:

 lsof -d mem

Visualizza i file eliminati bloccati

Un processo a volte mantiene bloccati file di grandi dimensioni anche dopo che sono stati eliminati, consumando spazio su disco.
Usa Lsof per trovare i file che sono stati eliminati in Linux ma sono ancora bloccati da uno o più processi.
Ad esempio, trova i file eliminati dalla directory principale utilizzando una barra (/ ) come simbolo di percorso:

sudo lsof [path] | grep deleted

Combina più opzioni

Il lsof comando consente più elementi di ricerca sulla riga di comando. Usa E e O logica per combinare diversi argomenti per ottenere risultati specifici. Di seguito sono riportati gli esempi più comuni.

  1. Elenca i file aperti da un particolare utente o processo con:
sudo lsof -u [username] -c [process]

L'output stampa entrambi i file aperti dall'utente saraz e quelli utilizzati dal processo scatta .

  1. Visualizza solo i file che corrispondono al primo termine di ricerca e al secondo termine di ricerca con l'operatore logico -a (e):
sudo lsof -u [username] -c [process] -a

In questo caso, lsof mostra solo i file aperti dall'utente saraz e la bash processo.

  1. Trova tutte le connessioni di rete di un utente:
sudo lsof -i -u [username] -a

Il -i e -a flag con il lsof comando stampa tutte le attività dell'utente root .

Ulteriori informazioni su lsof

Il lsof comando ha più opzioni di qualsiasi altro comando Linux. Il man la pagina è lunga quasi 2000 righe e offre molte informazioni.

Per esplorare le possibilità del comando, esegui:

man lsof

Conclusione

Questo tutorial mostra come utilizzare il lsof comando per la risoluzione di potenziali problemi di sicurezza e di sistema con esempi pratici.

Quindi, impara come copiare file e directory in Linux e confrontare due file usando il comando Linux diff.


Linux
  1. Comando wc Linux con esempi

  2. Comando Tee Linux con esempi

  3. Comando JQ in Linux con esempi

  4. 7 Esempi di comando lsof in Linux

  5. Comando Linux rsync con esempi pratici

15 Comando Linux ps con esempi

Comando Trova Linux con esempi pratici

lsof Command in Linux (10 esempi)

Comando IP Linux con esempi

Tutorial comando trova Linux (con esempi)

Comando di comunicazione Linux con esempi