So zeigen Sie in Linux offene Dateien und ihre Benutzer an

Foto des Autors

Das Kommando lsof ist der Schlüssel für alle Informationen zu geöffneten Dateien.

Wenn Sie auf der Kommandozeile das Kommando einfach ohne weitere Parameter geben, erhalten Sie eine ellenlange Liste. Die meisten Einträge darin interessieren Sie wahrscheinlich auch nicht, etwas welche Anwendung gerade bestimmte Library-Dateien verwendet.

lsof anpassen

Der Befehl lsof kann für die meisten Fragestellungen so modifiziert werden, dass er ganz spezifische Antworten gibt.

Achtung: Je nach Linux-Variante und den Rechten Ihres Kontos müssen Sie eventuell ein sudo davorstellen, damit der Befehl richtig funktioniert.

Zusätzlich kann lsof auch anzeigen, welche Netzwerkverbindungen gerade verwendet werden. Wie das geht, erfahren Sie nicht hier, sondern in diesem Tipp: Linux: Offene Internet-Verbindungen anzeigen.

Werbung

Anzeige der Verwendung bestimmter Dateien oder Geräte

Möchten Sie ganz gezielt wissen, wer der Nutzer einer bestimmten Datei ist, dann geben Sie einfach Pfad und Namen der Datei als Parameter an.

Der folgende Befehl sieht zum Beispiel nach, wer die Apache-Logdatei verwendet:

lsof /var/log/apache2/access.log

Nicht überraschenderweise kommt dabei der Prozess „apache2“ als Information zurück.

Weil bei Linux die meisten Geräte als Pseudofiles im Dateisystem eingeklinkt sind, funktioniert diese Methode auch dazu, die Nutzung von DVD- oder Tape-Laufwerken zu überprüfen.

Sie müssen dazu nur den Pfad der Gerätedatei wissen. Folgender Befehl prüft zum Beispiel auf den meisten Linux-Systemen, ob das CD-/DVD-Laufwerk gerade gebraucht wird:

lsof /dev/cdrom

Verzeichnispfade als Kriterium einsetzen

Interessant ist aber auch, einen bestimmten Verzeichnisbaum dahingehend zu prüfen, ob noch Dateien offen sind. Haben Sie zum Beispiel einen Samba-Server am laufen, sehen Sie so, ob ein Nutzer darin etwas verwendet. Im Fall eines notwendigen Neustarts, können Sie ihren Nutzern damit viel Ärger ersparen.

Liegen die gemeinsamen Dateien etwa im Verzeichnis /var/samba, dann lautet der Befehl so

lsof +D /var/samba

Damit wird auch auf Dateien in Unterverzeichnissen geprüft. Verwenden Sie stattdessen ein kleines D, um nur im genannten Verzeichnis selbst zu testen und die Subdirectories auszunehmen:

lsof +d /var/samba

Werbung

Dateien eines bestimmten Benutzers oder Prozesses zeigen

Möchten Sie wissen, was ein bestimmter Nutzer so alles offen hat, dann verwenden Sie den Parameter -u gefolgt von seinem Namen. Das funktioniert auch mit den internen Accounts, die für bestimmte Prozesse reserviert sind. So finden Sie zum Beispiel heraus, was der Benutzer „mysql“ gerade alles geöffnet hat:

lsof -u mysql

Gezielter als über den Account-Namen filtern Sie die Anzeige für bestimmte Prozesse über die Prozess-ID. Wenn zum Beispiel mehrere Programme über den gleichen Useraccount laufen, können Sie damit gezielt einen bestimmten Prozess ansprechen.

lsof -p <Prozess-ID>

Die Prozess-ID müssen Sie aber zuerst herausfinden, wie etwa per top oder ps.

Im folgenden Bild wird zum Beispiel die PID des cron-Tools ermittelt und dann nachgesehen, was dieses Programm alles an Dateien nutzt.

lsof zeigt alle Dateien von cron an
lsof zeigt alle Dateien von cron an
Werbung
Foto des Autors

Markus Schraudolph

Markus ist IT-Fachjournalist der ersten Stunde. Seine ersten Texte veröffentlichte er 1987 beim legendären Markt&Technik-Verlag. Seine Spezialität sind Datenbanken und Microsoft Excel. Als PHP-Experte programmierte Markus maßgeblich die erste Version des Tippscout und ist anerkannter Experte für PHP, MySQL und Wordpress.