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:
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
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:
Führen Sie für IPv6 den folgenden Befehl aus:
lsof -i 6
Zum Beispiel:
lsof -i 6
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
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 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
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
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
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
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
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
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.