lsof-Befehl in Linux (10 Beispiele)

Unter Linux wird alles als Dateien betrachtet und in Verzeichnissen organisiert. lsof (Liste der geöffneten Dateien) zeigt eine Liste der geöffneten Dateien an. Es hilft hauptsächlich, die Informationen über den Prozess herauszufinden, der die Dateien geöffnet hat. Abgesehen von Dateien kann es ein Verzeichnis, eine spezielle Blockdatei, eine gemeinsam genutzte Bibliothek, eine spezielle Zeichendatei, eine reguläre Pipe, eine Named Pipe, einen Internet-Socket, einen UNIX-Domain-Socket und viele andere auflisten.

In diesem Tutorial erfahren wir mehr über lsof-Befehl in Linux mit leicht verständlichen Beispiele.

lsof-Befehl

Der Befehl lsof ist standardmäßig in den meisten Linux-Distributionen verfügbar. Sehr häufig wird der Befehl lsof verwendet, wenn wir eine Festplatte nicht aushängen können. Dann hilft der Befehl lsof, die geöffnete Datei und ihren Prozess zu finden, der sie verursacht.

Syntax:

lsof [options] [names]

Die obige Syntax listet alle Dateien auf, die von allen Prozessen im System geöffnet wurden.

1. Alle geöffneten Dateien auflisten

Um schnell eine Liste der geöffneten Dateien zu erhalten, geben Sie lsof ein. Es listet alle Dateien auf, die von den verschiedenen Prozessen des Systems geöffnet wurden.

$ lsof

Normalerweise wird die Ausgabe sehr lang sein, verwenden Sie $ sudo lsof | more , wenn Sie den Inhalt Bildschirm für Bildschirm anzeigen möchten.

2. Geöffnete Dateien nach Benutzername auflisten

lsof verfügt über einen Befehl, der verwendet werden kann, um eine Liste bestimmter Dateien zu finden, die von einem bestimmten Benutzer geöffnet wurden.

Zu offene Dateien nach Benutzername auflisten verwenden Sie den folgenden Befehl:

$ lsof -u bobbin

offene Dateien eines Benutzers auflisten

Verwenden Sie für mehrere Benutzer die folgende Syntax:

$ lsof -u [username1] -u [username2]

ODER

$ lsof -u [username1], [username2]

So listen Sie geöffnete Dateien mit Ausnahme bestimmter Benutzer auf:

$ lsof -u ^root

Um nur die Prozess-ID aufzulisten, verwenden Sie die -t Möglichkeit.

$ lsof -t -u sonar

Dies ist hilfreich, wenn Sie alle Prozesse beenden müssen, die sich auf eine bestimmte Verwendung beziehen.

$ kill -9 lsof -t -u sonar

3. Geöffnete Dateien nach Prozess auflisten

lsof kann auch verwendet werden, um Dateien aufzulisten, die von einem bestimmten Prozess geöffnet wurden, indem Sie die -c Option gefolgt vom Prozessnamen.

Für example um alle geöffneten Dateien per ssh aufzulisten:

$ lsof -c ssh

vom Prozess verwendete offene Dateien auflisten

4. Geöffnete Dateien nach Dateinamen auflisten

Wir können den Dateinamen als Argument angeben, um alle Prozesse aufzulisten, die eine bestimmte Datei geöffnet haben.

Um alle Prozesse aufzulisten, die von der Datei /var/log/messages geöffnet wurden, geben Sie Folgendes ein:

$ lsof /var/log/messages

5. Offene Dateien nach Prozess-ID auflisten

Jeder Datei wird eine Prozess-ID zugewiesen. Ein einzelner Prozess kann eine große Anzahl von Dateien öffnen. Wir können den Befehl lsof verwenden, um alle geöffneten Dateien für eine bestimmte Prozess-ID aufzulisten.

Für example Geben Sie Folgendes ein, um geöffnete Dateien mit der Prozess-ID 2 aufzulisten:

$ lsof -p 2

offene Datei nach Prozess-ID-Nummer auflisten

Um offene Dateien für mehrere Prozess-IDs aufzulisten, geben Sie . ein

$ lsof -p 2,3

Ein System enthält eine große Anzahl von Prozessen, von denen jeder Dateien zur Verwendung geöffnet hat. Ein Prozess kann viele untergeordnete Prozesse haben, und dieser Prozess wird auch als übergeordneter Prozess bezeichnet.

Der Befehl lsof wird mit dem verwendet -R Option, um eine Liste der Dateien abzurufen, die von PPID (Parent Process IDentification) geöffnet wurden.

$ lsof -R

PPID geöffneter Dateien anzeigen

Sie können aus der Ausgabe in der 5. Spalte die PPID der geöffneten Dateien anzeigen.

Geben Sie Folgendes ein, um die PPID für eine bestimmte PID zu ermitteln:

$ lsof -p [PID] -R

6. Geöffnete Dateien in einem Verzeichnis auflisten

Um die geöffneten Dateien in einem bestimmten Verzeichnis aufzulisten, können wir den Befehl lsof verwenden.

Benutzen +d Option, um eine Liste der geöffneten Dateien im angegebenen Verzeichnis anzuzeigen, jedoch nicht in Unterverzeichnisse.

Die folgende example durchsucht offene Dateien im Verzeichnis /var/log:

$ lsof +d /var/log

  durchsucht offene Dateien in einem Verzeichnis

Die Option +D befiehlt lsof, die gesamte Tiefe des Verzeichnisses nach allen geöffneten Instanzen sowie allen darin enthaltenen Dateien und Verzeichnissen zu durchsuchen.

In diesem Fall sucht lsof nach geöffneten Dateien in /var/log und seinen Unterverzeichnissen:

$ lsof +D /var/log

durchsucht offene Dateien einschließlich Unterverzeichnissen

7. Offene Dateien mit Netzwerkprotokoll auflisten

Ein System kann für verschiedene Zwecke mit verschiedenen Netzwerken verbunden werden. Alles in Linux ist eine Datei, wir können die Dateien untersuchen, die von einer Netzwerkverbindung im System geöffnet werden.

Um die geöffneten Dateien im TCP-Protokoll aufzulisten, können wir den folgenden Befehl ausführen.

$ lsof -i TCP

öffne Dateien von tcp

Um die geöffneten Dateien im UDP-Protokoll aufzulisten, können wir den folgenden Befehl ausführen.

$ sudo lsof -i UDP

Dateien öffnen von udp

8. Offene Dateien nach Portnummer auflisten

lsof verfügt über einen Befehl, der speziell die geöffneten Dateien auf einer bestimmten Portnummer auflistet, um alle Prozesse aufzulisten, die auf diesem Port ausgeführt werden.

Für example um offene Dateien auf Portnummer 443 aufzulisten

$ lsof -i :443

Datei auf einem bestimmten Port öffnen

Sie können geöffnete Dateien für mehrere Portnummern wie folgt auflisten:

$ lsof -i :80,443

Sie können auch geöffnete TCP- oder UDP-Dateien nach Portbereichen auflisten.

$ lsof -i TCP:1-49151

9. Offene Dateien nach IPv4/IPv6 auflisten

Es gibt eine Option in lsof, um geöffnete IPv4- oder IPv6-Netzwerkdateien aufzulisten.

Um geöffnete IPv4-Dateien anzuzeigen, geben Sie

$ lsof -i4

IPv4 offene Dateien

Die folgende Syntax kann verwendet werden, um geöffnete IPv6-Dateien anzuzeigen:

$ lsof -i6

10. lsof kontinuierlich ausführen

Der Wiederholungsmodus ermöglicht es lsof, mit Updates mit festgelegten Verzögerungen kontinuierlich zu wiederholen. Der Wiederholungsmodus kann mit der Option ‘-r’ oder ‘+r’ aktiviert werden, wobei ‘+r’ endet, wenn keine geöffneten Dateien gefunden werden und ‘-r’ weiter auflisten wird, bis eine manuelle Unterbrechung eingeleitet wird. Jede Ausgabe des Verzögerungszyklus wird durch die Verwendung von ‘========’ getrennt.

Syntax:

$ lsof [options] -r/+r[time-interval]

Für example:

$ lsof -u sonar -r5

lsof-Befehlsheader

Der lsof hat verschiedene Spalten.

COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME

Der Name des mit dem Prozess verknüpften UNIX-Befehls wird in der Datei gespeichert COMMAND Säule.

Der PID zeigt die Prozess-ID des Befehls an.

Der USER zeigt den Namen des Benutzers an, der mit dem folgenden Prozess verknüpft ist.

Der TID zeigt die Aufgaben-ID an.

Der FD ist ein Dateideskriptor, der Abkürzungen wie cwd (Current Working Directory), txt (Text Files), mem (Memory-mapped file), rtd (root directory) und viele andere enthält.

TYPE ist eine Abkürzung für einen bestimmten Dateityp, z. B. REG (Reguläre Datei), DIR (Verzeichnis), CHR (Character Special File) und so weiter.

Der DEVICE enthält die Gerätenummern.

Der SIZE/OFF enthält die Dateigröße oder den Datei-Offset in Bytes.

Der NODE Spaltenwert stellt die Knotennummer einer lokalen Datei dar.

Der NAME zeigt den Namen des Einhängepunkts und des Dateisystems der Datei sowie die Internetadresse an.

Fazit

In diesem Tutorial haben wir den Befehl lsof und seine Verwendung anhand von Beispielen kennengelernt. lsof bietet eine Reihe von Optionen zum Anpassen der Ausgabe an Ihre Anforderungen. Es ermöglicht Ihnen, einfach und schnell mehrere Argumente zu kombinieren, um die erforderliche Ausgabe zu erhalten.