Der Befehl lsof
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.
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/.
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 | |
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!