Esistono sempre diversi processi in esecuzione nel sistema, accedendo a diversi file del sistema. Questi file potrebbero essere file di disco, script, prese di rete, dispositivi, tubi nominati e altri. Usando "LSOF", è possibile eseguire molte cose, come il debug. È anche abbastanza utile per gli amministratori di sistema per capire quali file vengono accessibili da quali processi. Uno degli scenari più utili che ho trovato è quando stai per sconvolgere un filesystem ma è ancora accessibile.
Senza ulteriori indugi, iniziamo con "LSOF"! Suppongo che il tuo attuale sistema UNIX/Linux abbia già installato "LSOF".
quale lsof
Ciò riporta il percorso completo del comando, in questo caso, "LSOF".
Versione "LSOF"
lsof -v
Ciò segnalerà informazioni approfondite della versione di "LSOF", inclusa la data di build della versione binaria, del compilatore, dei flag del compilatore e altri.
Uso di base "LSOF"
Esegui "LSOF" da solo.
lsof
Questo riporta un grande elenco di tutti i file a cui si accede al sistema al momento dell'esecuzione del comando.
Mentre tutti i campi sono autoesplicativi, per lo più si confondono sulle colonne "FD" e "Tipo" e sui loro valori. Dai un'occhiata.
FD: abbreviazione di "descrittore di file". Viene visualizzato i seguenti valori.
Ci sono anche altri valori che noterai nella colonna, come "1u" seguito da U, R, W, ecc. valore. Cosa significano quelli?
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 al sistema contemporaneamente ed eseguire operazioni per cui hanno il permesso.
Per controllare i file a cui si accede da un determinato utente, eseguire il comando seguente.
lsof -u
Tuttavia, per verificare gli utenti con un rango più alto, "LSOF" avrà bisogno di un privilegio "superuser".
sudo lsof -u
Che ne dici di verificare tutti i comandi e i file a cui un determinato utente accede? Eseguire quello seguente.
lsof -i -u
Ancora una volta, per gli utenti con rango più alto, "LSOF" avrà bisogno del privilegio "Superuser".
sudo lsof -i -u
Processi di esecuzione specifici della porta
Per scoprire tutti i processi che stanno attualmente utilizzando una determinata porta, chiamare "LSOF" con il flag "-i" seguito dalle informazioni sul protocollo e sulla porta.
lsof -i<46><@hostname|host_address>
:
Ad esempio, per controllare tutti i programmi che attualmente accedono alla porta 80 tramite protocollo TCP/IP, eseguire il comando seguente.
LSOF -I TCP: 80
Questo metodo può anche essere utilizzato per mostrare tutti i processi che utilizzano porte all'interno di un determinato intervallo, ad esempio da 1 a 1000. La struttura di comando è 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 stanno attualmente utilizzando i protocolli IPv4 e IPv6.
lsof -i 4
lsof -i 6
Elenco connessioni di rete
Il seguente comando segnalerà tutte le connessioni di rete dal sistema corrente.
lsof -i
Escluso con ^
Sì, possiamo escludere utente, porta, FD e altri specifici usando 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 escluso con "LSOF", ad esempio, con le bandiere come "-c", "-d" ecc. Non tutte le 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
PID è una proprietà importante di qualsiasi processo di esecuzione sul sistema. Consente di individuare più fine a un determinato processo. Il nome del processo non è molto utile in molte situazioni in quanto 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 "PS" per elencare tutti i processi in esecuzione e filtrare l'output usando "grep" con il nome del processo e/o i comandi.
PS -A
Ora, esegui il filtro usando "grep".
PS -A | grep
Ora, controlla quali file a quel PID accede.
lsof -p
Elenco file Apri per un dispositivo specifico
La funzionalità di "LSOF" non è limitata a queste funzioni. Puoi anche filtrare il risultato di "LSOF" anche per dispositivo. A tale scopo, il comando assomigliarà a questo.
lsof
Questo comando è super utile per scoprire tutti i processi in esecuzione con le informazioni sul proprietario che accedono a un determinato filesystem. Se hai difficoltà a sbloccare un filesystem, questo è il modo migliore per andare.
lsof
Elenco i file aperti sotto una directory
Simile all'esempio precedente, basta passare il percorso della directory a "LSOF" per scoprire se qualsiasi processo sta accedendo.
Nota: "LSOF" controllerà la directory in modo ricorsivo, quindi può richiedere 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 -uPensieri finali
Le caratteristiche di "LSOF" non si fermano solo qui. Quelli menzionati qui sono quelli di cui avremo bisogno di più quotidianamente. Ci sono molte altre funzionalità di "LSOF" che possono tornare utili (in casi specifici, ovviamente).
Per tutte le funzionalità disponibili e il loro utilizzo, dai un'occhiata alle pagine dell'uomo e delle informazioni di "LSOF".
uomo lsofInfo LSOFlsof -?Godere!