GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Gewusst wie:Verwenden von lsof – 10 grundlegende Befehle zur Fehlerbehebung auf Ihrem Linux-Server

Einführung

Irgendwann in seiner Karriere wird jeder ein Problem lösen. Und jeder hat seinen bevorzugten Schritt zur Fehlerbehebung. Für viele Systemadministratoren ist der erste Schritt, sicherzustellen, dass alles auf dem neuesten Stand ist. Für andere müssen Sie nur die Protokolldateien überprüfen, bevor Sie Ihre Lösung finden. Für mich und andere hier bei Atlantic.Net ist es lsof; Ein Befehlszeilenprogramm, das verwendet wird, um Informationen über Dateien aufzulisten, die von verschiedenen Prozessen geöffnet werden.

lsof wird hauptsächlich zur Fehlerbehebung bei Netzwerkverbindungsproblemen verwendet und ist eine leistungsstarke, aber zu wenig bekannte Anwendung. Wenn Sie mit allgemeinen Linux-Befehlen vertraut sind, ist lsof ein leicht zu merkendes Tool, da es „geöffnete Dateien auflistet“.

Voraussetzungen

lsof ist ein Unix-spezifischer Befehl. Um es zum Identifizieren von Systeminformationen zu verwenden, müssen Sie ein System im Unix-Stil wie CentOS oder Ubuntu verwenden. lsof ist auf diesen Systemen vorinstalliert.

Wenn Sie ein Windows-System verwenden, können Sie ähnliche Ergebnisse erzielen, indem Sie das Process Explorer-Menü sowie die Befehle netstat und sysinternals verwenden.

lsof Nutzungs-Flags

Es ist wichtig zu verstehen, dass lsof über eine große Anzahl verfügbarer Flags verfügt, mit denen Sie die erhaltene Ausgabe ändern können. Unten sehen Sie alle verfügbaren Flags:

[[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]

Jede Flagge durchzugehen, wäre ein viel längerer Artikel, also halten wir die Dinge einfach und decken nur die am häufigsten verwendeten täglichen Optionen ab.

Schlüsseloptions-Flags

Es ist wichtig zu verstehen, wie lsof funktioniert, insbesondere standardmäßig. Wenn Sie Optionen an den Befehl lsof übergeben, ist das Standardverhalten ODER die Ergebnisse. Das bedeutet, dass Sie lsof sowohl mit dem -i ausführen müssen sowie das -p flag erhalten Sie die Ergebnisse von beiden.

Dies sind die am häufigsten verwendeten Flags in unserer Fehlerbehebung:

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

Erste Schritte

Alle geöffneten Dateien auflisten.

# lsof

Alle geöffneten Dateien auflisten.

Alle Verbindungen anzeigen:

# lsof -i

Alle Verbindungen anzeigen

Der Server, auf dem wir testen, ist ein neuer CentOS6-Server von Atlantic.Net, auf dem keine zusätzlichen Softwarepakete installiert sind. Sie können aus der obigen Ausgabe ersehen, dass der Server nur auf SSH- und SMTP-Verkehr lauscht. Wenn Sie die tatsächliche Portnummer anstelle des Dienstnamens sehen möchten, müssen wir den Befehl mit dem -Pi ausführen Flagge:

lsof -Pi

Alle Verbindungen anzeigen, die Ports abhören, ohne den Dienstnamen aufzulösen.

Wie Sie sehen können, sind alle *:ssh und localhost:smtp Ausgabe wurde in *:22 konvertiert und localhost:25 . Für die meisten Systemadministratoren, insbesondere wenn Sie es nicht gewohnt sind, Systemdienste zu durchsuchen und zu analysieren, ist es oft einfacher, Probleme zu beheben, indem Sie den Port direkt identifizieren, anstatt den Dienstnamen zu verwenden.

Verbindungen auf IPv6-Ports anzeigen:

lsof -i6

Verbindungen auf IPv6-Ports anzeigen

Im Vergleich zu lsof -i zuvor, sucht dieser Befehl speziell nach Diensten mit einem TYPE von IPv6 .

Verbindungen auf einem bestimmten Port anzeigen, ohne den Dienstnamen aufzulösen:

lsof -Pi :25

Verbindungen auf einem bestimmten Port anzeigen, ohne den Dienstnamen aufzulösen

Wenn Sie speziell nach allen aktuellen Prozessen suchen, die auf Port 25 lauschen, zeigt sich, dass zwei aktuelle Prozesse auf dem System (ein IPv4, ein IPv6) ausgeführt werden. Keiner dieser Prozesse lauscht auf externe Verbindungen.

Listening-Ports anzeigen:

lsof -i -sTCP:LISTEN

Listening-Ports anzeigen

Dieser Befehl listet alle laufenden Prozesse auf, die sich im LISTEN befinden Status, was bedeutet, dass sie aktiv auf eingehende Verbindungen warten.

Zeigen, wer eine Datei verwendet:

lsof /path/of/file

Sie können aus dem obigen Befehl ersehen, dass zwei Prozesse aktiv ausgeführt werden und das /var/log/ Nachrichten Datei irgendwie.

Alle geöffneten Dateien in einem Verzeichnis rekursiv anzeigen:

lsof +D /usr/lib

Alle geöffneten Dateien in einem Verzeichnis rekursiv anzeigen

Auf unserem Testsystem mit +D Flag zeigt sechs separate offene Prozesse, die aus /usr/lib stammen Verzeichnis.

Geöffnete Dateien nach Benutzer anzeigen:

lsof -u atlantic-noc

Offene Dateien nach Benutzer anzeigen

Der atlantic-noc-Benutzer hat eine aktive SSH-Sitzung mit einer Prozess-ID (PID) von 7769.

Alle geöffneten Dateien mit bestimmter Prozess-ID anzeigen:

lsof -p 7790

Alle geöffneten Dateien mit spezifischer Prozess-ID anzeigen

Das -p Die Option hat geöffnete Dateien herausgefiltert, sodass nur diejenigen mit der angegebenen Prozess-ID angezeigt werden. In diesem Fall PID 7790. Sie können mehrere PIDs auswählen, indem Sie ein Komma angeben, z. B. -p 7789,7790

Alle Netzwerkaktivitäten für einen bestimmten Benutzer anzeigen:

lsof -a -u atlantic-noc -i

Das -a flag kombiniert (ändert das standardmäßige OR-Verhalten in AND) das -u und -i Flags, um eine Liste der Verwendung von Netzwerkdateien für den Benutzer atlantic-noc bereitzustellen; in diesem Fall nur eine einzelne SSH-Sitzung.

Sonst noch etwas?

Die oben vorgestellten Befehle sind nur der Anfang für lsof; ein vielseitiges Werkzeug, das entweder allein oder in Kombination mit anderen Unix-Fehlerbehebungswerkzeugen wie strace verwendet werden kann. Aber das ist ein anderer Artikel.

Denken Sie daran, in unserem Blog nach Updates zu diesem Artikel, anderen Linux-bezogenen Beiträgen und weiteren Einführungen in Unix-Befehle zu suchen oder mehr über unsere zuverlässigen VPS-Hosting-Dienste zu erfahren.


Linux
  1. Fehlerbehebung Wenn Ihre Website auf einem Linux-Server nicht verfügbar ist

  2. Fehlerbehebung Wenn Ihre Website auf einem Linux-Server nicht verfügbar ist

  3. So übertragen Sie Dateien zwischen zwei Computern mit den Befehlen nc und pv

  4. So verwalten Sie Protokolldateien mit Logrotate unter Linux

  5. So verwenden Sie OpenSSH, um eine Verbindung zu Ihrem Linux-Server herzustellen

So überprüfen Sie Ihre Serverlast unter Linux

So überprüfen Sie Ihre Serverlast im Linux-System

So überprüfen Sie die Betriebszeit Ihres Linux-Servers

So verwenden Sie Linux-FTP-Befehle

So richten Sie einen Rsync-Daemon auf Ihrem Linux-Server ein

So richten Sie eine Firewall auf Ihrem Linux-Server ein