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

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

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

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

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

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

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

Um die geöffneten Dateien im UDP-Protokoll aufzulisten, können wir den folgenden Befehl ausführen.
$ sudo lsof -i 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

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

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.