Der Befehl lsof

lsof-featured

In diesem Beitrag lernen Sie den Befehl lsof (list open files) kennen, welcher unter UNIX- / Linux-Betriebssystemen der Auflistung von Informationen zu allen auf dem System geöffneten Dateien dient. Da unter UNIX / Linux alles eine Datei ist, werden von dem Befehl auch Blockgeräte, Netzwerkports usw. angesprochen.

Allgemeine Syntax

Die allgemeine Syntax des Befehls lsof lautet folgendermaßen:

lsof [Optionen] [Datei(en)]

Wurden keine Optionen oder Dateien angegeben, so gibt lsof standardmäßig eine Auflistung aller momentan von allen aktiven Prozessen geöffneten Dateien aus. Dateien können dabei neben regulären Dateien auch Verzeichnisse, Blockdateien, Bibliotheken, Streams oder Netzwerkdateien (Internet-Socket, NFS-Datei oder UNIX-Domain-Socket) sowie ausführende Textreferenzen sein.

Durch Angabe einer oder mehrerer Dateien (bzw. Verzeichnisse) ist es möglich, nur diese in der Ausgabe zu berücksichtigen.

Beispiel: lsof ohne Argumente

Der Befehl lsof wird in diesem Beispiel ohne jegliche Argumente ausgeführt, um eine Auflistung aller von allen aktiven Prozessen derzeit geöffneten Dateien zu erhalten.
Eingabe:

lsof

Ausgabe:

Die Ausgabe von lsof ist bei der hier gezeigten Anwendung sehr ausführlich. Im folgenden Bild werden beispielhaft die ersten 10 Zeilen der Ausgabe gezeigt.

befehl-lsof-beispiel-1
Beispiel: lsof ohne Optionen, mit Datei / Verzeichnis

In diesem Beispiel wird lsof ohne Optionen, aber mit Angabe eines Verzeichnisses ausgeführt.
Eingabe:

lsof /home/hellberg/

Ausgabe:

Die Ausgabe zeigt nun ausschließlich geöffnete Instanzen des Verzeichnisses /home/hellberg/.

befehl-lsof-beispiel-2

Wichtige Optionen

Die wichtigsten Optionen des Befehls werden in diesem Abschnitt behandelt.

-a - Filter UND-verknüpfen

Standardmäßig werden mehrere Filteroptionen ODER-verknüpft. Durch Verwendung der Option -a ist es möglich, stattdessen alle spezifizierten Optionen UND-zu-verknüpfen.

lsof -a [Optionen] [Datei(en)]

-c - Nach Prozessname filtern

Die Ausgabe von geöffneten Dateien eines Prozesses, welcher einen bestimmten Befehl ausführt, ist mit der Option -c möglich. Der Option wird dabei der Name des Befehls (bzw. Prozesses) übergeben. Alle Prozesse, deren Befehl mit der Angabe beginnt, werden dann ausgegeben.

lsof -c [Prozessname] [Datei(en)]

+D - Nach Verzeichnis filtern

Mithilfe der Option +D ist es möglich, alle geöffneten Instanzen eines angegebenen Verzeichnisses sowie rekursiv aller darin enthaltenen Dateien und Unterverzeichnisse auszugeben. Symbolischen Links, die sich im Verzeichnis befinden, wird standardmäßig nicht gefolgt. Auch auf Dateisystem-Einhängepunkten in Unterverzeichnissen des angegebenen Verzeichnisses wird nicht nach offenen Dateien gesucht.

lsof +D [Verzeichnis] [Datei(en)]

-i - Nach (Internet-)Adresse filtern

Die Auflistung von Dateien, dessen Internet-Adresse mit einer angegebenen Adresse übereinstimmt, ist mit der Option -i möglich. Mehrere Adressen, bis zu einem Maximum von 100, können durch Verwendung mehrerer -i Optionen angegeben werden. Portnummern zählen als eine Adresse. Wird keine Adresse angegeben, dann gibt lsof alle Internet und x.25 (HP-UX) Netzwerkdateien aus. 

lsof -i [Adresse] [Datei(en)]

Eine Internet-Adresse wird wie folgt spezifiziert. Alle in eckigen Klammern dargestellten Teile sind jeweils optional:

[IP-Version][Protokoll][@Hostname|Hostadresse][:Service|Port]

Die Bedeutung der einzelnen Teile wird in folgender Tabelle erklärt:

[...]

Bedeutung

IP-Version

Spezifiziert die IP-Version, entweder 4 (IPv4) oder 6 (IPv6), die auf die darauffolgende Adresse zutrifft. "6" darf nur dann angegeben werden, wenn IPv6 unterstützt wird. Wenn weder "4" noch "6" angegeben werden, dann trifft die folgende Adresse auf alle IP-Versionen zu.

Protokoll

Protokollname (TCP oder UDP)

Hostname

Spezifiziert einen Internet-Hostnamen. Wurde keine IP-Version angegeben, so werden geöffnete Netzwerkdateien mit Hostnamen aller Versionen ausgegeben.

Hostadresse

Spezifiziert eine numerische IPv4-Adresse in Punktform oder eine IPv6-Adresse in Doppelpunkt-Schreibweise. Eine IPv6-Adresse darf nur dann angegeben werden, wenn IPv6 unterstützt wird. Wurde eine IP-Version spezifiziert, dann dürfen hier zudem nur ihre jeweiligen numerischen Adressen angegeben werden.

Service

Spezifiziert einen /etc/services Namen oder eine Liste von ihnen. Zum Beispiel: "smtp".

Port

Spezifiziert eine Portnummer oder eine Liste von ihnen.

Alternativ ist auch die Verwendung der Optionen -i4 oder -i6 ohne darauffolgende Adresse möglich. Es werden dann nur Dateien der spezifizierten IP-Version (IPv4 oder IPv6) ausgegeben.

lsof -i[4|6] [Datei(en)]

+p - Nach PID filtern

Mit der Option +p können Dateien ausgegeben werden, die von Prozessen geöffnet sind, die die angegebene Prozess-ID (PID) haben. Mehrere PIDs können kommagetrennt angegeben werden.

lsof +p [PID] [Datei(en)]

-u - Nach Benutzer filtern

Sollen nur Dateien für einen angegebenen Benutzer ausgegeben werden, so verwenden Sie die Option -u. Die Angabe mehrerer Benutzernamen ist, wie auch bei der Option +p, kommagetrennt möglich.

lsof -u [Benutzer] [Datei(en)]

Abonniere JETZT unseren Newsletter!


Verpasse nie wieder neue Beiträge und exklusive Insider-Only-Inhalte!

Joel Benseler

Click Here to Leave a Comment Below

Leave a Comment: