AA_123rf-25554891_JovancheVitanovski-123RF.jpg

© Jovanche Vitanovski, 123RF

Lsof findet, zeigt und untersucht Datenströme

Offene Türen

,
Unter Unix und Linux gilt: Alles ist eine Datei. Daher sind Tools, die Informationen über Dateien und Datenströme liefern, von großer Bedeutung. Zu den wichtigsten dieser Werkzeuge zählt Lsof.

Die Idee von Lsof [1] ist recht einfach: Das Programm ermittelt spezielle Systemressourcen – reguläre Dateien, Verzeichnisse, Block- und Zeichengeräte, Streams oder Netzwerkfiles (Sockets) – die vom Kernel geöffnet wurden. Dann gibt es eine Liste dieser Ressourcen aus, angereichert mit zusätzlichen Informationen wie beispielsweise der PID, UID, dem Status und so weiter. Daneben verrät Ihnen Lsof die Pfade von geöffneten Dateien. Auf diese Weise lässt sich herausfinden, welche Bibliotheken und Konfigurationsdateien ein Programm momentan verwendet.

Solche Informationen helfen dabei, Fehler im Ablauf der Prozesse beziehungsweise im System zu finden und zu beheben. Tritt etwa beim Aushängen einer angesteckten USB-Festplatte ein Problem auf, zeigt Ihnen Lsof den blockierenden Prozess, der momentan noch auf die Ressource zugreift. Beenden Sie ihn, dann lässt sich die Festplatte ordnungsgemäß entfernen. Problematischer wird es, wenn Prozesse nicht mehr auf Signale reagieren oder abgestürzt sind. In diesen Fällen lassen sie sich zwar oft noch mit Lsof ermitteln, aber nicht mehr durch Kill beenden.

Tatsächlich ist Lsof aber weit mehr als ein einfaches Werkzeug zum Auffinden offener Files beziehungsweise der intern verwendeten File-Deskriptoren. Es verfügt über Features, wie sie sonst nur Ps, Netstat und eine Reihe weiterer Tools bieten. Gerade die Funktionsvielfalt macht die Arbeit mit Lsof allerdings nicht gerade einfach. Wie bei Befehlszeilenprogrammen üblich aktivieren respektive deaktivieren Sie die speziellen Features von Lsof über Optionen (siehe Tabelle "Wichtige Optionen von Lsof"). Da Lsof sehr viele Optionen kennt, lohnt ein Blick auf die Syntax der Optionen.

Wichtige Optionen von Lsof

Option Funktion
-a logisches Und
-b verhindert, dass Lsof blockierende Funktionen verwendet
-c Zeichen wählt nur Prozesse aus, die mit Zeichen beginnen
+c Anzahl definiert, wie viele Zeichen berücksichtigt werden
+d Verzeichnis alles finden, was auf das Verzeichnis und dort enthaltene Dateien zeigt
-d Muster alles ausschließen, was dem angegebenen Muster entspricht
+D Verzeichnis wie +d, berücksichtigt Unterverzeichnisse
+/-f definiert, wie Lsof Pfade interpretieren soll
-i4 / -i6 nur IPv4- beziehungsweise IPv6-Verbindungen berücksichtigen
-p PID nur Prozesse mit der angegebenen PID berücksichtigen
-t nur PIDs ausgeben, sodass die Ausgabe als Argument für Kill dienen kann
-u User nur Prozesse des angegebenen Users (UID oder Name) berücksichtigen
-U Unix Domain Sockets verwenden
-T Key TCP/IP-Informationen gemäß Key ausgeben (siehe Manpage)
-s Dateigrößen anzeigen
-S Sekunden Timeout für Kernel-Funktionen (min. 2s, Vorgabe 15s)
+/-r Sekunden aktiviert den Wiederholungsmodus
-V markiert angeforderte, aber nicht gefundene Befehle, Dateien, IDs, etc.

Syntax

Als Kennzeichen für Optionen (Prefix) nutzt Lsof sowohl das normalerweise verwendete Minuszeichen (-Option), als auch das Pluszeichen (+Option). Minuszeichen leiten Optionen ein und aktivieren sie, wobei Sie mehrere Schalter kombinieren dürfen: -a -b lässt sich auch als -ab angeben, genauso gut funktioniert auch -ac Anzahl für -a +c Anzahl.

Das Pluszeichen bleibt etwas spezielleren Optionen vorbehalten. Bei den Optionen spielt es eine wichtig Rolle, ob Sie sie mit einem Prefix in Form eines Plus- oder Minuszeichens aufrufen. Stellen Sie eine Option mit einem Pluszeichen vor Optionen mit Minuszeichen, kombiniert Lsof sie normalerweise auch problemlos: +M -a entspricht +Ma. Im Zweifelsfall sollten Sie die Optionen jedoch einzeln angeben beziehungsweise in Gruppen mit dem entsprechenden Prefix zusammenfassen.

Geben Sie nichts anderes an, verknüpft Lsof die Optionen intern mit einem logischen Oder (Bedingung1 ODER Bedingung2). Durch Angabe der Option -a ändern Sie das: Nun verwendet Lsof ein logisches Und (Bedingung1 UND Bedingung2). Außerdem können Sie mit einem Caret (^) Bedingungen negieren, etwa um mittels -u ^UID eine UID auszuschließen. Dies entspricht in etwa der Syntax von Gruppen in regulären Ausdrücken.

Ausgaben

Starten Sie Lsof ohne Optionen, so listet es alle momentan geöffneten Dateien aller vorhandenen Prozesse auf (Listing 1). Ganz am Anfang enthält die Ausgabe dabei einmal eine kurze Info-Zeile mit den Spaltenbezeichnern. Nach vielen dieser Spalten können Sie die Ausgaben sortieren lassen beziehungsweise deren Ausgabe durch Optionen einschränken. In der Vorgabe sortiert Lsof die Ausgabe nach der ersten Spalte (COMMAND), sodass alle Angaben zu einem Prozess zusammen erscheinen. Dies entspricht einer Sortierung nach der Prozess-ID (PID).

Listing 1

$ lsof
COMMAND  PID  USER   FD  TYPE  DEVICE  SIZE/OFF    NODE  NAME
systemd    1  root  cwd   DIR     8,6      4096       2  /
systemd    1  root  rtd   DIR     8,6      4096       2  /
systemd    1  root  txt   REG     8,6   1511624  400489  /usr/lib/systemd/systemd
systemd    1  root  mem   REG     8,6     19024  413874  /usr/lib/libuuid.so.1.3.0
[...]

Unter User finden Sie den Namen des zugehörigen Benutzers, nicht aber dessen UID. Es folgt die Spalte mit den File-Deskriptoren (FD), die Kanäle zu bestimmten Dateien beziehungsweise Verzeichnissen herstellen. Die wichtigsten der hier möglichen Angaben zeigt die Tabelle "File-Deskriptoren".

Bei numerischen Angaben, gefolgt von einem oder mehreren Buchstaben, handelt es sich um eine Deskriptor-Nummer samt Angaben zum Dateizugriff. Beim ersten Buchstaben steht r für Lesezugriff, w für Schreibzugriff und u für beides. Der nicht immer vorhandene zweite Buchstabe bezeichnet die Art des File-Lockings. Auch hier gibt es wieder r, w und u und darüber hinaus Varianten mit Großbuchstaben. Daraus lässt sich erkennen, ob Teile der Datei (Kleinbuchstaben) oder das gesamte File (Großbuchstaben) für den Zugriff gesperrt wurden. Genaueres dazu finden Sie bei Interesse in der Sektion LOCKS der Lsof-Manpage.

File-Deskriptoren

Deskriptor Bedeutung
cwd Current Working Directory (Arbeitsverzeichnis)
txt Textdatei (Code und Daten)
rtd Root Directory (Wurzelverzeichnis)
mem Memory-mapped File (meist Bibliotheken)
mmap Memory-mapped Device (Gerätezugriff)
ltx Shared Library Text (Code und Daten)
err FD Information Error (Zugriffsfehler)
pd Parent Directory (Elternverzeichnis)

Das nächste Feld (die nächste Spalte) enthält einen TYPE für den File-Deskriptor. Diese kennzeichnet die Art der Verbindung, also ob es sich um eine lokale Datei, eine Pipe, eine FIFO-Queue, eine Netzwerkverbindung und so weiter handelt. Die häufigsten Varianten zeigt die Tabelle "FD-Typen".

FD-Typen

Typ Bedeutung
REG reguläre lokale Datei
DIR Verzeichnis
PIPE Pipe
IPv4, IPv6 IP-Verbindung (Socket)
DEL gelöschte Datei
BLK Block-Device
CHR Character-Device

Die unter DEVICE angegebene Zahlenkombination verrät, mit welchem Gerät eine Verbindung besteht. Die zugehörige Dateigröße finden Sie unter SIZE/OFF. Besonders wichtig ist die mit NAME bezeichnete Spalte, die Pfad und Name der geöffneten Datei enthält – zumindest, solange es sich um eine reguläre, lokale Datei handelt.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 3 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...