Lsof è l'acronimo di Elenco di file aperti che mostra informazioni dettagliate su quali file sono tenuti aperti su un sistema Linux e quali processi li hanno aperti. È stato sviluppato e supportato da Victor A. Abell.
Questo articolo ti aiuterà a comprendere l'utilizzo del comando lsof insieme a 12 esempi pratici.
Elenco tutti i file aperti utilizzando lsof
Per visualizzare l'elenco dei file aperti esegui semplicemente lsof e otterrai l'output come di seguito in cui puoi vedere un'intestazione come un comando, Pid, Utente, FD, ecc.
$ lsof
Nell'esempio precedente, la maggior parte delle colonne e dei relativi valori sono autoesplicativi. Quindi vediamo cos'è in realtà FD, Fd si riferisce a File Descriptor e contiene valori come:
- cwd-cartella di lavoro corrente
- rtd – directory principale
- txt – testo
- mem – file mappato in memoria
Apri l'elenco dei file per un utente specifico
Puoi specificare l'utente utilizzando l'opzione -u del comando che ti consente di elencare tutti i file aperti per quell'utente.
$ lsof -u root
Elenca file aperti per ID processo
Supponiamo che tu conosca il pid del processo specifico, puoi cercare nell'elenco di file aperti in base a pid usando l'opzione -p insieme al comando finale con il valore pid. È necessario eseguire il comando come specificato nell'esempio riportato di seguito.
# lsof -p 82
Processo di esecuzione della porta specifico
Per verificare quale processo ha occupato la porta specifica, puoi elencarli usando l'opzione -i insieme al numero di porta su TCP/UDP. Nell'esempio seguente, scopriamo quale processo ha preso la porta 80.
# lsof -i:80
Visualizza l'elenco di file di rete specifici (IPv4 e IPv6)
Per visualizzare i file aperti in base al tipo di file di rete, è necessario specificare il tipo dopo l'opzione -i.
Per IPv4 devi eseguire il comando come il seguente.
# lsof -i 4
Per, IPv6 esegui il comando,
# lsof -i 6
Trova processi che ascoltano un intervallo di porte specifico
Se si desidera visualizzare l'elenco dei file aperti dell'intervallo di porte specifico. Devi usare -i trascinando il comando con un intervallo di porte specifico.
# losf -i TCP:1-100
Escludi l'utente specifico dall'elenco dei file aperti
Puoi escludere gli utenti dall'output utilizzando il carattere '^' del comando come indicato nell'esempio seguente.
# lsof -i -u^sanju
Elenca i processi in base al percorso della directory
Per trovare un processo in esecuzione su una directory specifica puoi eseguire un comando con l'opzione +D che segue il percorso insieme ad esso. Devi eseguire il comando nel modo seguente.
# lsof +D /home/sanju
Visualizza connessioni di rete
Utente -i opzione al comando per visualizzare l'elenco delle connessioni di rete in base a Listening &Established.
$ lsof -i
Processo specifico di uccisione
A volte alcuni processi potrebbero resistere all'arresto anche se si chiude il processo o alcuni processi sconosciuti potrebbero occupare la porta su cui si desidera eseguire un programma specifico. Per forzare l'arresto del processo, puoi utilizzare il comando lsof poiché è più facile elencare il processo in esecuzione. Quindi devi eseguire il comando nel modo seguente.
# kill -9 $(lsof -t -i:8080)
Elenca i file aperti in base a FD (File Descriptor)
Puoi filtrare i file aperti in base ai tipi FD, devi usare l'opzione -d insieme al tipo FD come menzionato nell'esempio seguente.
# lsof -d rtd
Elenca i file aperti in base al nome del processo
È possibile elencare i file in base al nome del processo utilizzando l'opzione -c con il comando. Esegui il comando nei seguenti modi
# lsof -c nginx
Conclusione
Ti sono grato per aver dedicato il tuo tempo per leggere questo articolo. Spero che tu abbia acquisito alcune conoscenze su come utilizzare il comando lsof. Queste sono le cose che trovo utili durante la distribuzione dell'applicazione.