Linux lsof Befehl für Anfänger (10 Beispiele)

Der Befehl lsof unter Linux zeigt in seiner Ausgabe Informationen über Dateien an, die von Prozessen geöffnet werden. In diesem Artikel werden wir das Tool anhand von 10 leicht verständlichen Beispielen diskutieren. Bitte beachten Sie, dass alle in diesem Tutorial genannten Beispiele auf Ubuntu 22.04 und Debian 11 getestet wurden.

Über lsof Command

Wenn Sie den Namen von Dateien sehen möchten, die von einem bestimmten Prozess (oder allen Prozessen) geöffnet wurden, können Sie dies mit dem Befehl lsof tun: Eine geöffnete Datei kann eine normale Datei, ein Verzeichnis, eine Bibliothek, eine Blockspezialdatei, eine Zeichenspezialdatei, eine ausführende Textreferenz oder sogar ein Stream oder eine Netzwerkdatei sein.

1. Wie man alle geöffneten Dateien auflistet

Um alle geöffneten Dateien aufzulisten, führen Sie den Befehl lsof ohne Argumente aus:

lsof

Zum Beispiel, Hier ist der Screengrab eines Teils der Ausgabe des obigen Befehls, der auf meinem System erzeugt wurde:

Wie man alle offenen Dateien unter Linux auflistet

Die erste Spalte repräsentiert den Prozess, während die letzte Spalte den Dateinamen enthält. Weitere Informationen zu allen Spalten finden Sie auf der Man Page des Befehls.

2. Wie man Dateien auflistet, die von Prozessen geöffnet wurden, die zu einem bestimmten Benutzer gehören.

Das Tool ermöglicht es Ihnen auch, Dateien aufzulisten, die von Prozessen geöffnet wurden, die zu einem bestimmten Benutzer gehören. Auf diese Funktion kann über die Funktion -u Kommandozeilenoption.

lsof -u [Benutzername]

Zum Beispiel:

lsof -u howtoforge

Wie man Dateien auflistet, die von Prozessen geöffnet werden, die einem bestimmten Benutzer gehören.

3. Wie listet man Dateien basierend auf ihrer Internetadresse auf?

Mit dem Tool können Sie Dateien anhand ihrer Internetadresse auflisten. Dies kann mit Hilfe des -i Kommandozeilenoption. Wenn Sie möchten, können Sie beispielsweise IPv4- und IPv6-Dateien getrennt anzeigen lassen. Führen Sie für IPv4 den folgenden Befehl aus:

lsof -i 4

Zum Beispiel:

Wie man Dateien anhand ihrer Internetadresse auflistet

Führen Sie für IPv6 den folgenden Befehl aus:

lsof -i 6

Zum Beispiel:

lsof -i 6

Lsof-Ausgang

4. Wie man prozessspezifische Dateien auflistet

Mit dem Tool können Sie auch geöffnete Dateien basierend auf PID-Nummern (Process Identification) anzeigen. Dies kann durch die Verwendung des -p Kommandozeilenoption.

lsof -p [PID]

Zum Beispiel:

lsof -p 2066

Wie man prozessspezifische Dateien auflistet

Sie können auch bestimmte PIDs in der Ausgabe ausschließen, indem Sie das Symbol ^ vor ihnen hinzufügen. Um eine bestimmte PID auszuschließen, können Sie den folgenden Befehl ausführen:

lsof -p [^PID]

Zum Beispiel:

lsof -p ^1

Wie man prozessspezifische Dateien auflistet - Ergebnis

Wie Sie im obigen Screenshot sehen können, wird der Prozess mit der ID 1 aus der Liste ausgeschlossen.

5. So listen Sie IDs von Prozessen auf, die eine bestimmte Datei geöffnet haben

Mit dem Tool können Sie IDs von Prozessen auflisten, die eine bestimmte Datei geöffnet haben. Dies kann durch die Verwendung des -t Kommandozeilenoption.

$ lsof -t [file-name]

Zum Beispiel:

$ lsof -t  /lib/i386-linux-gnu/libaudit.so.1.0.0

So listen Sie IDs von Prozessen auf, die eine bestimmte Datei geöffnet haben

6. Wie man lsof auf ein bestimmtes Verzeichnis einschränkt

Wenn du willst, kannst du auch lsof nach allen offenen Instanzen eines Verzeichnisses suchen lassen (einschließlich aller Dateien und Verzeichnisse, die es enthält). Auf diese Funktion kann über die Funktion +D Kommandozeilenoption.

$ lsof +D [Verzeichnis-Pfad]

Zum Beispiel:

$ lsof +D /usr/lib/locale

Wie man lsof auf ein bestimmtes Verzeichnis einschränkt

7. Auflistung aller Internet- und x.25 (HP-UX) Netzwerkdateien

Dies ist möglich, indem Sie die Option -i Kommandozeilenoption, die wir bereits beschrieben haben. Nur, dass du es ohne Argumente verwenden musst.

$ lsof -i

Auflistung aller Internet- und x.25 (HP-UX) Netzwerkdateien

8. Wie man offene Dateien auflistet, basierend auf dem Portbereich

Das Dienstprogramm ermöglicht es Ihnen auch, offene Dateien basierend auf einem bestimmten Port oder Portbereich aufzulisten, z.B. um offene Dateien für Port 1-1024 anzuzeigen, verwenden Sie den folgenden Befehl:

$ lsof -i :1-1024

Wie man offene Dateien auflistet, basierend auf dem Portbereich

9. Auflistung der offenen Dateien nach Verbindungsart (TCP oder UDP)

Das Tool ermöglicht es Ihnen, Dateien nach der Art der Verbindung aufzulisten. Verwenden Sie beispielsweise für UDP-spezifische Dateien den folgenden Befehl:

$ lsof -i udp

Auflistung der offenen Dateien nach Verbindungsart (TCP oder UDP)

Ebenso können Sie die Anzeige von TCP-spezifischen Dateien veranlassen.

10. Wie man lsof list Parent PID von Prozessen macht

Es gibt auch eine Option, die lsof zwingt, die Nummer der Parent Process IDentification (PPID) in der Ausgabe aufzulisten. Die fragliche Option ist -R.

$ lsof -R

Um PPID-Informationen für eine bestimmte PID zu erhalten, können Sie den folgenden Befehl ausführen:

$ lsof -p [PID] -R

Zum Beispiel:

$ lsof -p 3 -R

Wie man lsof list Parent PID von Prozessen macht

Fazit

Obwohl lsof eine Fülle von Optionen bietet, sollten die, die wir hier besprochen haben, ausreichen, um Sie zum Einstieg zu bringen. Sobald du mit diesen Übungen fertig bist, gehe auf die Man Page des Tools, um mehr darüber zu erfahren. Oh, und falls du irgendwelche Zweifel und Fragen hast, schreib unten einen Kommentar ein. Andere gebräuchliche Programme zum finden von Dateien sind z.B. der find Befehl.

Das könnte dich auch interessieren …