Mit Lsof nach offenen Dateien fahnden – Teil 1

Während die Version 2 noch auf allen möglichen Unix-Varianten lief, ist Lsof v3 Linux-Systemen vorbehalten. Lsof steht für „LiSt Open Files“, war für Windows-Nutzer vielleicht auf dem ersten Blick nicht sonderlich spannend klingt.

Everything a File

Unix und Linux jedoch sind Betriebssysteme, deren Konzeption und Aufbau maßgeblich auf dem Datei-Konzept basiert, d. h. neben Text- und Binärdateien gibt es zahlreichen andere Datei-Typen, die wichtige Dateisystemfunktionalitäten wie Prozesse, Pipes oder Sockets auf Dateien abbilden. Durch Abfragen, Auslesen oder Weiterverarbeiten solcher Dateien gewinnen iX-Administratoren wichtige Erkenntnisse oder steuern wichtige Funktionen.

Getreu dem Unix-Motto „everything a file“ im Folgenden ein paar auch heute noch nützliche Szenarien, bei denen Lsof wertvolle Dienste leistet:

1. Folgender Befehl findet alle offenen Files im angegeben Verzeichnis, samt Unterverzeichnissen:

lsof +D /var/log

2. Um einfach nur heraus zu finden, welcher Prozess Dateien geöffnet hat, genügt der Aufruf ohne Optionen im angegebenen Verzeichnis:

lsof /var/log/syslog

3. Möchte man wissen, welcher Prozess den angegeben Port nutzt, gibt man Folgendes ein:

lsof -i:139

4. Das Kommando lässt sich noch einmal nach TCP und UDP aufschlüsseln

nur TCP: lsof -i tcp:137
nur UDP: lsof -i udp:137

Interessanter ist es meist herausfinden zu können, für welche momentan geöffneten Dateien ein bestimmtes laufendes Programm verantwortlich ist, z. B.

lsof -c nginx

Auch die geöffneten Dateien eines bestimmten Nutzers lassen sich einfach ermitteln:

lsof -u drilling

Natürlich lässt sich lsof Unix-typisch in vielfältiger Weise mit Filtern verknüpfen. Suchkriterien werden standardmäßig OR-vernüpft. Wer Kriterien mit UND verknüpfen will, verwenden dazu die Option „-a“:
Mit dem Caret-Zeichen („^“) können Filter wie PID, UID, Benutzer- oder Prozess-Namen einfach negiert werden. ^
So zeigt beispielsweise

lsof -u ^1

sämtliche offenen Dateien aller User mit Ausnahme derjenigen des Benutzers mit der PID 1 (root).

Sämtliche möglichen Optionen findet man wie üblich auf der Man-Page.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.