GNU/Linux >> Linux Esercitazione >  >> Linux

Come usare il comando lsof in Linux

Il compito del comando lsof è "elencare i file aperti" nel sistema. Un file aperto non significa necessariamente un pdf o un file di testo, include file del disco o pipe utilizzati dai processi in background.

Questo comando è uno strumento utile per i debugger del sistema operativo e gli amministratori di sistema.

Anche se il comando lsof è un'utilità Linux preinstallata, gli utenti Ubuntu/Debian possono installare utilizzando apt se non lo hai installato:

sudo apt install lsof

Altri utenti Linux possono installare tramite il loro comando di installazione standard seguito da lsof .

Passiamo rapidamente all'utilizzo di lsof comando:

Elenca tutti i file aperti nel sistema

Eseguendo il comando lsof senza alcuna opzione, possiamo elencare tutti i file aperti nel sistema. In questo modo il terminale verrà svuotato con un sacco di dati. Pertanto, è consigliabile utilizzare less comando che limita i dati generati da qualsiasi comando

sudo lsof | less

Premendo il 'ENTER' o il tasto freccia giù, possiamo andare in fondo all'elenco.

Ciascun file nell'output fornisce informazioni importanti sul tipo e sull'utilizzo.

  • COMANDO – Il comando Linux associato al processo responsabile dell'apertura del file.
  • PID – ID processo del processo che contiene il file.
  • TID – L'ID thread per il rispettivo processo.
  • UTENTE – L'utente Linux che gestisce il processo.
  • FD – Descrittore di file utilizzato dal processo per l'associazione al file.
    • cwd – directory di lavoro corrente
    • rtd – directory principale
    • txt – un programma testuale come un codice
    • mem – file mappato in memoria
  • TIPO – Il tipo del file
    • REG – File normale
    • DIR – Directory
    • CHR – File di caratteri
    • LINK – File di collegamento simbolico
  • DISPOSITIVO – I numeri di dispositivo relativi al file.
  • TAGLIA/OFF – La dimensione del file o il suo offset in byte.
  • NODO – Il numero dell'inode.
  • NOME – Il nome del file.

Nota: Alcune informazioni come l'inode o il numero del dispositivo potrebbero essere oscurate se il comando non viene eseguito utilizzando i permessi di root.

Possiamo saperne di più sull'output dalle pagine di manuale a cui è possibile accedere dal terminale eseguendo man lsof.

Elenca tutti i file aperti da un utente specifico usando il comando lsof

Il lsof comando supporta molte opzioni che possono essere applicate per filtrare i file aperti. Uno di questi è -u opzione per visualizzare i file aperti per un utente specifico.

sudo lsof -u <USER_NAME> | less

La terza colonna si basa sull'utente responsabile dell'apertura del file. Simile all'output di base, il terminale è sovraffollato di dati privi di significato e quindi utilizza less comando è consigliato.

Elenca i file aperti in una directory particolare

I file esistono all'interno di una directory, quindi è abbastanza banale poter estrarre i file aperti in una directory particolare.

lsof +D <DIR_NAME>

Nella figura sopra, abbiamo elencato il file attualmente aperto nella cartella Documenti. Il file aperto è un normale file C++.

Elenca i file aperti in un particolare file system con il comando lsof

Invece di una singola directory, lsof comando può elencare i file aperti da un particolare file system. Ciò si ottiene inserendo il nome del file system dopo lsof comando.

lsof <FILE_SYSTEM>

Nella figura sopra, mostriamo i file aperti nel file system /proc.

Elenca i file aperti da un particolare processo

Utilizzando gli ID di processo, possiamo filtrare i file aperti. Questo può essere fatto con l'aiuto di -p opzione.

lsof -p <PID>

Lo snippet sopra del terminale mostra l'elenco dei file aperti per il processo con PID come 3404.

Nota: Il simbolo del cursore (^) viene utilizzato per negare i parametri in lsof comando. Ad esempio lsof -p ^3404 , visualizza l'elenco dei file aperti per tutti i PID tranne 3404.

Elenca i file di rete aperti

Linux archivia una serie di file di rete per la memorizzazione di indirizzi IP o la configurazione dell'interfaccia di rete. Questi tipi di file aperti possono essere filtrati da -i bandiera.

lsof -i 

Questi file hanno determinate caratteristiche come i tipi di protocolli di rete. I file aperti possono essere ulteriormente filtrati utilizzando parametri specifici come:

  • '4' – I file di rete per IPv4
  • '6' – I file di rete per IPv6
  • 'TCP' – I file di rete per TCP
  • 'UDP' – I file di rete per UDP
  • 'TCP:25' – I file di rete per TCP, con numero di porta 25
  • 'TCP:1-25' – I file di rete per TCP, con numero di porta da 1 a 25

Ad esempio:

lsof -i 6

Utilizzo di lsof Command per cercare i file aperti sulla base del comando

Con migliaia di file aperti nel sistema, sembra impossibile cercare linearmente un comando particolare. Pertanto, il lsof il comando ha il -c opzione per filtrare i file aperti in base al comando.

lsof -c <COMMAND>

Conclusione

Il lsof comando supporta molte opzioni efficaci per il debug e la risoluzione dei problemi di sistema. I lettori interessati possono visitare le pagine di manuale attraverso il terminale eseguendo man lsof , per acquisire maggiori informazioni sui privilegi e sull'output del comando.

Sentiti libero di commentare di seguito per qualsiasi domanda o feedback.


Linux
  1. Come usare il comando Disown in Linux

  2. Come utilizzare il comando md5sum in Linux

  3. Come utilizzare il comando Tar in Linux

  4. Come usare il comando Su in Linux

  5. Come usare il comando tar sotto Linux

Come utilizzare un comando file in Linux

Come utilizzare il comando sysctl in Linux

Come utilizzare il comando di arresto di Linux

Come utilizzare il comando SCP su Linux

Come utilizzare il comando Gzip in Linux?

Come utilizzare il comando shred Linux