Comandi Linux

Comando lsof di Linux

Comando lsof di Linux
Lo strumento di comando "lsof" in Linux è uno dei tanti strumenti integrati che è super utile per controllare l'"elenco dei file aperti". Sì, il termine "lsof" è l'abbreviazione del compito.

Ci sono un certo numero di processi in esecuzione nel sistema tutto il tempo, che accedono a diversi file del sistema. Questi file potrebbero essere file su disco, script, socket di rete, dispositivi, named pipe e altri. Usando "lsof", è possibile eseguire molte cose, come il debug. È anche abbastanza utile per gli amministratori di sistema capire a quali file accedono da quali processi. Uno degli scenari più utili che ho trovato è quando stai per smontare un filesystem ma è ancora accessibile.

Senza ulteriori indugi, iniziamo con "lsof"! Suppongo che il tuo attuale sistema UNIX/Linux abbia già installato "lsof".

Posizione

che lsof

Questo riporta il percorso completo del comando, in questo caso "lsof".

versione “lsof”
lsof -v

Questo riporterà informazioni approfondite sulla versione di "lsof", inclusa la data di compilazione del binario, la versione del compilatore, i flag del compilatore e altri.

Utilizzo di base di "lsof"

Esegui "lsof" da solo.

lsof

Questo riporta un GRANDE elenco di tutti i file a cui il sistema accede al momento dell'esecuzione del comando.

Sebbene tutti i campi siano autoesplicativi, per lo più confondi le colonne "FD" e "TYPE" e i loro valori. Diamo un'occhiata.

FD: Abbreviazione di “File Descriptor”. Viene fornito con i seguenti valori.

Ci sono anche altri valori che noterai nella colonna, come "1u" seguito da u, r, w, ecc. valore. Cosa significano??

TIPO: Descrive il tipo di file e la sua identificazione. I valori sono i seguenti.

File aperti specifici dell'utente

Linux è una brillante piattaforma multiutente. Più utenti possono accedere contemporaneamente al sistema ed eseguire operazioni per le quali sono autorizzati.

Per controllare i file a cui accede un determinato utente, eseguire il seguente comando.

lsof -u

Tuttavia, per controllare gli utenti con un rango più alto, "lsof" avrà bisogno del privilegio di "superutente".

sudo lsof -u

Che ne dici di controllare tutti i comandi e i file a cui un determinato utente sta accedendo?? Esegui il seguente.

lsof -i -u

Ancora una volta, per gli utenti con un rango più alto, "lsof" avrà bisogno del privilegio di "superutente".

sudo lsof -i -u

Processi in esecuzione specifici per porta

Per scoprire tutti i processi che stanno attualmente utilizzando una determinata porta, chiama "lsof" con il flag "-i" seguito dal protocollo e dalle informazioni sulla porta.

lsof -i<46><@hostname|host_address>
:

Ad esempio, per controllare tutti i programmi che accedono attualmente alla porta 80 tramite il protocollo TCP/IP, eseguire il comando seguente.

lsof -i TCP:80

Questo metodo può essere utilizzato anche per mostrare tutti i processi che utilizzano le porte entro un determinato intervallo, ad esempio da 1 a 1000. La struttura dei comandi è simile a prima con un po' di magia nella parte del numero di porta.

lsof -i TCP:1-1000

Processi specifici del protocollo

Ecco 2 esempi che mostrano i processi che attualmente utilizzano i protocolli IPv4 e IPv66.

lsof -i 4

lsof -i 6

Elenco delle connessioni di rete

Il seguente comando riporterà tutte le connessioni di rete dal sistema corrente.

lsof -i

Escluso con ^

Sì, possiamo escludere utenti, porte, FD e altri specifici utilizzando il carattere "^". Tutto quello che devi fare è usarlo con cautela in modo da non rovinare l'intero output.

In questo esempio escludiamo tutti i processi dall'utente “root”.

lsof -u^root

Esistono altri modi per utilizzare questo meccanismo di esclusione con "lsof", ad esempio con i flag come "-c", "-d" ecc. Non tutti i flag supportano questo meccanismo. Ecco perché consiglio di provare una demo con questo metodo con qualsiasi flag prima di implementarlo in alcuni script.

Ricerca PID

Il PID è una proprietà importante di qualsiasi processo in esecuzione sul sistema. Consente un'individuazione più precisa di un determinato processo. Il nome del processo non è molto utile in molte situazioni poiché lo stesso binario può creare copie di se stesso ed eseguire attività diverse in parallelo.

Se non sai come ottenere il PID di un processo, usa semplicemente "ps" per elencare tutti i processi in esecuzione e filtra l'output usando "grep" con il nome del processo e/o i comandi.

ps -A

Ora, esegui il filtraggio usando "grep".

ps -A | grep

Ora, controlla a quali file sta accedendo il PID.

lsof -p

Elenco dei file aperti per un dispositivo specifico

La funzionalità di "lsof" non si limita solo a queste funzioni. Puoi anche filtrare il risultato di "lsof" anche in base al dispositivo. A questo scopo, il comando sarà simile a questo.

lsof

Questo comando è super utile per scoprire tutti i processi in esecuzione con le informazioni sul proprietario che accedono a un particolare filesystem. Se hai problemi a smontare un filesystem, questo è il modo migliore per procedere.

lsof

Elenca i file aperti in una directory

Simile all'esempio precedente, passa semplicemente il percorso della directory a "lsof" per scoprire se un processo vi sta accedendo.

Nota: "lsof" controllerà la directory in modo ricorsivo, quindi potrebbe volerci del tempo.

=lsof +D

Bonus: termina tutte le attività dell'utente

Sii estremamente cauto con questa parte in quanto può semplicemente rovinare tutto ciò che un utente sta facendo. Il seguente comando ucciderà tutti i processi in esecuzione di un utente.

sudo kill -9 'lsof -t -u Pensieri finali

Le caratteristiche di “lsof” non si fermano qui. Quelli menzionati qui sono quelli di cui avremo più bisogno giorno per giorno. Ci sono molte altre funzionalità di "lsof" che possono tornare utili (in casi specifici, ovviamente).

Per tutte le funzionalità disponibili e il loro utilizzo, controlla le pagine man e info di "lsof".

uomo lsof

info lsof

lsof -?

Godere!

I migliori giochi di laboratorio dell'app Oculus
Se possiedi un visore Oculus, devi essere informato sul sideloading. Il sideloading è il processo di installazione di contenuti non archiviati sul vis...
I 10 migliori giochi da giocare su Ubuntu
La piattaforma Windows è stata una delle piattaforme dominanti per i giochi a causa dell'enorme percentuale di giochi che si stanno sviluppando oggi p...
I 5 migliori giochi arcade per Linux
Al giorno d'oggi, i computer sono macchine serie utilizzate per i giochi. Se non riesci a ottenere il nuovo punteggio più alto, saprai cosa intendo. I...