GNU/Linux >> Linux Esercitazione >  >> Linux

Procedura:Utilizzo di lsof – 10 comandi essenziali per risolvere i problemi del server Linux

Introduzione

Ad un certo punto della loro carriera, tutti risolveranno un problema. E ognuno ha il proprio passaggio preferito per la risoluzione dei problemi da utilizzare. Per molti amministratori di sistema, il primo passo da fare è assicurarsi che tutto sia aggiornato. Per altri si tratta solo di controllare i file di registro prima di trovare la soluzione. Per me e altri qui su Atlantic.Net, è lsof; un'utilità della riga di comando utilizzata per elencare le informazioni sui file che vengono aperti da vari processi.

Utilizzato principalmente per la risoluzione dei problemi di connessione di rete, lsof è un'applicazione potente ma troppo poco conosciuta. Se hai familiarità con i comandi Linux generali, lsof è uno strumento facile da ricordare perché "elenca i file aperti".

Prerequisiti

lsof è un comando specifico di Unix. Per usarlo per identificare le informazioni di sistema, dovrai utilizzare un sistema in stile Unix, come CentOS o Ubuntu. lsof è preinstallato su questi sistemi.

Se utilizzi un sistema Windows, puoi ottenere risultati simili utilizzando il menu Process Explorer, oltre ai comandi netstat e sysinternals.

ldi flag di utilizzo

Una cosa che è importante capire è che lsof ha un gran numero di flag disponibili che possono essere usati per modificare l'output che ricevi. Di seguito vengono mostrati tutti i flag disponibili:

[[email protected] ~]# lsof --help
    usage: [-?abhlnNoOPRtUvVX] [+|-c c] [+|-d s] [+D D] [+|-f[gG]] [+|-e s]
    [-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+m [m]] [+|-M] [-o [o]] [-p s]
    [+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]

L'esame di ogni bandiera sarebbe un articolo molto più lungo, quindi manterremo le cose semplici e tratteremo solo le opzioni quotidiane più utilizzate.

Flag di opzioni chiave

È importante capire come funziona lsof, soprattutto per impostazione predefinita. Quando si passano le opzioni al comando lsof, il comportamento predefinito è O i risultati. Ciò significa che l'esecuzione di lsof utilizza sia -i così come il -p flag otterrai i risultati di entrambi.

Questi sono i flag usati più spesso nella nostra risoluzione dei problemi:

default : with no options flags, lsof lists all open files for active processes
grouping : it's possible to group options, such as passing the flags though -nPi. Just keep an eye out for which options take additional parameters
-a : AND the result (instead of the default OR)
-l : show the userID instead of the username in the output
-h : get help
-i : selects the listing of files that match
-n : stop host name resolution of network numbers
-t : get process IDs only
-P : stop conversion of port numbers to port names

Per iniziare

Elenca tutti i file aperti.

# lsof

Elenca tutti i file aperti.

Mostra tutte le connessioni:

# lsof -i

Mostra tutte le connessioni

Il server su cui stiamo testando è un nuovo server Atlantic.Net CentOS6 su cui non sono installati pacchetti software aggiuntivi. Puoi vedere dall'output sopra che il server sta ascoltando solo il traffico SSH e SMTP. Se vuoi vedere il numero di porta effettivo invece del nome del servizio, dovremo eseguire il comando utilizzando il -Pi bandiera:

lsof -Pi

Mostra tutte le connessioni in ascolto sulle porte senza risolvere il nome del servizio.

Come puoi vedere, tutti i *:ssh e localhost:smtp l'output è stato convertito in *:22 e localhost:25 . Per la maggior parte degli amministratori di sistema, soprattutto se non sei abituato a esaminare e analizzare i servizi di sistema, spesso è più facile risolvere i problemi identificando direttamente la porta invece di utilizzare il nome del servizio.

Mostra connessioni su porte IPv6:

lsof -i6

Mostra connessioni su porte IPv6

Rispetto a lsof -i comando precedente, questo comando cerca specificamente i servizi con un TYPE di IPv6 .

Mostra connessioni su una porta specifica senza risolvere il nome del servizio:

lsof -Pi :25

Mostra le connessioni su una porta specifica senza risolvere il nome del servizio

L'analisi specifica di tutti i processi correnti in ascolto sulla porta 25 mostra che ci sono due processi correnti sul sistema (uno IPv4, uno IPv6) in esecuzione. Nessuno di questi processi è in ascolto di connessioni esterne.

Mostra porte di ascolto:

lsof -i -sTCP:LISTEN

Mostra le porte di ascolto

Questo comando elenca tutti i processi in esecuzione che si trovano in LISTEN stato, il che significa che stanno attivamente ascoltando le connessioni in entrata.

Mostra chi sta utilizzando un file:

lsof /path/of/file

Puoi vedere dal comando precedente due processi sono attivamente in esecuzione e utilizzano /var/log/ messaggi file in qualche modo.

Mostra ricorsivamente tutti i file aperti in una directory:

lsof +D /usr/lib

Mostra ricorsivamente tutti i file aperti in una directory

Sul nostro sistema di test, utilizzando il +D flag mostra sei processi aperti separati originati da /usr/lib directory.

Mostra file aperti per utente:

lsof -u atlantic-noc

Mostra i file aperti per utente

L'utente atlantic-noc ha una sessione SSH attiva con un ID processo (PID) di 7769.

Mostra tutti i file aperti con un ID processo specifico:

lsof -p 7790

Mostra tutti i file aperti con un ID processo specifico

Il -p l'opzione ha filtrato i file aperti in modo che vengano mostrati solo quelli con l'ID processo specificato. In questo caso, PID 7790. È possibile selezionare più PID specificando una virgola, ad esempio -p 7789,7790

Mostra tutte le attività di rete per un utente specifico:

lsof -a -u atlantic-noc -i

Il -a flag combina (modifica il comportamento OR predefinito in AND) il -u-i flag per fornire un elenco di utilizzo dei file di rete per l'utente atlantic-noc; in questo caso solo una singola sessione SSH.

Nient'altro?

I comandi presentati sopra sono solo l'inizio per lsof; uno strumento versatile che può essere utilizzato da solo o in combinazione con altri strumenti di risoluzione dei problemi di Unix, come strace. Ma questo è un articolo per un'altra volta.

Ricordati di controllare il nostro blog per eventuali aggiornamenti a questo articolo, altri post relativi a Linux e ulteriori istruzioni sui comandi Unix o scopri di più sui nostri affidabili servizi di hosting VPS.


Linux
  1. Come risolvere i problemi quando il tuo sito non funziona su un server Linux

  2. Come risolvere i problemi quando il tuo sito non funziona su un server Linux

  3. Come trasferire file tra due computer utilizzando i comandi nc e pv

  4. Come gestire i file di registro utilizzando Logrotate in Linux

  5. Come ordinare i file in Linux usando il comando di ordinamento

Come controllare il carico del tuo server in Linux

Come controllare il carico del server nel sistema Linux

Come controllare il tempo di attività del tuo server Linux

Come usare i comandi FTP di Linux

Come configurare un demone Rsync sul tuo server Linux

Come configurare un firewall sul tuo server Linux