So zeigen Sie in Linux offene Dateien und ihre Benutzer an

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.

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

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

Halt die Klappe, Alexa! 😤

So, Schluss, aus. Alexa ist abgestöpselt. Stecker aus der Dose, ab ins Regal. Warum? Weil mir das Amazon Echo dauernd reinquatscht. Und weil es mich nicht versteht.

Warum ich von einem simplen „Plop“ so begeistert bin 🎛

VCV-Rack

Ok, es ist mehr, als ein „Plop“ – es ist auch ein „Wi-UUU-Wi-UUU“ und so vieles mehr. Ich spreche von einem modularen Synthesizer. Fast hätte ich mir so ein Ding als Hardware gekauft für über 500 Euro. Doch dann habe ich ein Programm entdeckt, das einen modularen Synthesizer auf dem Computer simuliert.