Lsof: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
(10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{DISPLAYTITLE:lsof}} | {{DISPLAYTITLE:lsof}} | ||
'''lsof''' ('''L'''i'''s'''t '''o'''pen '''f'''iles) - zeigt welche Programme welche [[Datei]]en oder [[Socket (Software)|Sockets]] geöffnet halten | '''lsof''' ('''L'''i'''s'''t '''o'''pen '''f'''iles) - zeigt welche Programme welche [[Datei]]en oder [[Socket (Software)|Sockets]] geöffnet halten | ||
== Beschreibung == | == Beschreibung == | ||
== Ausgabeformat == | == Ausgabeformat == | ||
Offene Dateien | ;Offene Dateien | ||
* UNIX Domain Sockets (type=unix) | * UNIX Domain Sockets (type=unix) | ||
* Reguläre Dateien (type=REG) | * Reguläre Dateien (type=REG) | ||
Zeile 15: | Zeile 15: | ||
und noch einige dutzend andere, wie [[AX.25]]-Sockets, Block-Devices usw. | und noch einige dutzend andere, wie [[AX.25]]-Sockets, Block-Devices usw. | ||
; Ausgabe | |||
Anzeige unterschiedlicher Typen sehen (Spalte TYPE) | |||
* hier vorwiegend des [[Secure Shell|sshd]] und ssh-Client | |||
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME | COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME | ||
Zeile 37: | Zeile 39: | ||
... | ... | ||
; Ausgabeformat für andere Programme | |||
Für die Verarbeitung der Ausgabe mit Scripten kann mit der Option -F ein alternatives Ausgabeformat erzeugt werden, bei dem in jeder Zeile ein identifizierender Buchstabe gefolgt vom entsprechenden Wert steht. | |||
* Für jeden laufenden Prozess wird ein mehrzeiliger Abschnitt angelegt, der eingeleitet wird durch die Zeile mit dem Buchstaben p und der Prozess-ID. | |||
Für die Verarbeitung der Ausgabe mit Scripten kann mit der Option -F ein alternatives Ausgabeformat erzeugt werden, bei dem in jeder Zeile ein identifizierender Buchstabe gefolgt vom entsprechenden Wert steht. Für jeden laufenden Prozess wird ein mehrzeiliger Abschnitt angelegt, der eingeleitet wird durch die Zeile mit dem Buchstaben p und der Prozess-ID. Innerhalb eines Prozessabschnitts befinden sich Werte wie die User-ID des Prozesses, eingeleitet durch u, außerdem mehrere Abschnitte zu den geöffneten Dateien, eingeleitet durch eine Zeile mit dem Buchstaben f und dem File-Descriptor. | * Innerhalb eines Prozessabschnitts befinden sich Werte wie die User-ID des Prozesses, eingeleitet durch u, außerdem mehrere Abschnitte zu den geöffneten Dateien, eingeleitet durch eine Zeile mit dem Buchstaben f und dem File-Descriptor. | ||
Eine beispielhafte Ausgabe für den Prozess sshd mit zwei Datei-Abschnitten sähe dann so aus: | |||
... | ... | ||
p5502 | p5502 | ||
Zeile 69: | Zeile 72: | ||
... | ... | ||
Verwendet wird dieses Ausgabeformat z. B. von einigen Scripten, die mit lsof mitgeliefert werden. | Verwendet wird dieses Ausgabeformat z. B. von einigen Scripten, die mit lsof mitgeliefert werden. | ||
== | == Anwendungen == | ||
Sehr oft wird lsof genutzt, wenn der [[Unix]]-Befehl [[Mounten#mount (Unix)|umount]] sich weigert, ein Gerät auszuhängen, wenn noch Dateien auf diesem Gerät bzw. in dessen Mount-Verzeichnis geöffnet sind (die Raute stellt eine Root-Shell dar): | [[File:lsof.png|mini|400px|[https://www.instagram.com/p/C7q613ZuHMm/ ''lsof'' Beispiele]]] | ||
Sehr oft wird lsof genutzt, wenn der [[Unix]]-Befehl [[Mounten#mount (Unix)|umount]] sich weigert, ein Gerät auszuhängen, wenn noch Dateien auf diesem Gerät bzw. in dessen Mount-Verzeichnis geöffnet sind (die Raute stellt eine Root-Shell dar): | |||
# umount /mount/path | # umount /mount/path | ||
Zeile 103: | Zeile 107: | ||
[[Kategorie:Linux/Prozesse]] | [[Kategorie:Linux/Prozesse]] | ||
[[Kategorie:Linux/Befehl]] | [[Kategorie:Linux/Befehl]] | ||
[[Kategorie:Linux/Datei/Verwaltung]] | |||
{{DEFAULTSORT:lsof}} | {{DEFAULTSORT:lsof}} | ||
</noinclude> | </noinclude> |
Aktuelle Version vom 1. Oktober 2024, 21:08 Uhr
lsof (List open files) - zeigt welche Programme welche Dateien oder Sockets geöffnet halten
Beschreibung
Ausgabeformat
- Offene Dateien
- UNIX Domain Sockets (type=unix)
- Reguläre Dateien (type=REG)
- FIFOs (type=FIFO)
- Geöffnete Verzeichnisse (type=DIR)
- Internet Domain sockets (type=IPv4 oder type=IPv6)
- Character devices (Spezialdateien wie /dev/random; type=CHR)
und noch einige dutzend andere, wie AX.25-Sockets, Block-Devices usw.
- Ausgabe
Anzeige unterschiedlicher Typen sehen (Spalte TYPE)
- hier vorwiegend des sshd und ssh-Client
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME ... ssh-agent 2678 lbo 3u unix 0xffff88013e71cac0 0t0 7624 /tmp/ssh-oyerzGJI2633/agent.2633 ssh-agent 2678 lbo 6w FIFO 0,8 0t0 4795 pipe ssh-agent 2678 lbo 8r FIFO 0,8 0t0 4799 pipe system-co 2866 lbo mem REG 8,6 162968 1050015 /usr/lib/x86_64-linux-gnu/libssh2.so.1.0.1 sshd 3031 root cwd DIR 8,6 4096 2 / sshd 3031 root rtd DIR 8,6 4096 2 / sshd 3031 root txt REG 8,6 517088 1053360 /usr/sbin/sshd sshd 3031 root mem REG 8,6 131107 1187879 /lib/x86_64-linux-gnu/libpthread-2.13.so sshd 3031 root mem REG 8,6 80712 1180726 /lib/x86_64-linux-gnu/libresolv-2.13.so sshd 3031 root 0u CHR 1,3 0t0 1028 /dev/null sshd 3031 root 3u IPv4 8026 0t0 TCP *:ospfapi (LISTEN) sshd 3031 root 4u IPv6 8028 0t0 TCP *:ospfapi (LISTEN) ssh 7314 lbo cwd DIR 8,7 4096 5767169 /home/lbo ssh 8602 lbo 3r IPv6 68343 0t0 TCP [2001:470:1f0b:2f2:3189:67c1:b550:9400]:56194->obsd-lbo6:ssh (ESTABLISHED) ... udevd 3226 root 11u netlink 0t0 10784 KOBJECT_UEVENT ...
- Ausgabeformat für andere Programme
Für die Verarbeitung der Ausgabe mit Scripten kann mit der Option -F ein alternatives Ausgabeformat erzeugt werden, bei dem in jeder Zeile ein identifizierender Buchstabe gefolgt vom entsprechenden Wert steht.
- Für jeden laufenden Prozess wird ein mehrzeiliger Abschnitt angelegt, der eingeleitet wird durch die Zeile mit dem Buchstaben p und der Prozess-ID.
- Innerhalb eines Prozessabschnitts befinden sich Werte wie die User-ID des Prozesses, eingeleitet durch u, außerdem mehrere Abschnitte zu den geöffneten Dateien, eingeleitet durch eine Zeile mit dem Buchstaben f und dem File-Descriptor.
Eine beispielhafte Ausgabe für den Prozess sshd mit zwei Datei-Abschnitten sähe dann so aus:
... p5502 g5502 R1 csshd u0 Lroot fcwd a l tDIR D0x811 s4096 i2 k25 n/ ftxt a l tREG D0x811 s540896 i657919 k1 n/usr/sbin/sshd ...
Verwendet wird dieses Ausgabeformat z. B. von einigen Scripten, die mit lsof mitgeliefert werden.
Anwendungen
Sehr oft wird lsof genutzt, wenn der Unix-Befehl umount sich weigert, ein Gerät auszuhängen, wenn noch Dateien auf diesem Gerät bzw. in dessen Mount-Verzeichnis geöffnet sind (die Raute stellt eine Root-Shell dar):
# umount /mount/path umount: /mount/path: device is busy.
Durch lsof lässt sich nun einfach feststellen, welche Programme beendet werden müssen, um ein erfolgreiches Aushängen zu gewährleisten:
# lsof /mount/path bash 3156 usr cwd DIR 8,33 4096 2 /mount/path
Aus dem gefundenen Eintrag lässt sich entnehmen, dass der Nutzer usr noch eine bash-Shell mit PID 3156 laufen hat, die /mount/path als Arbeitsverzeichnis (Current Working Directory) nutzt, erkennbar am Typ DIR.
Die mount-Version aus dem util-linux-Paket weist sogar auf lsof hin:
# umount /mount/path umount: /mount/path: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
Anhang
Siehe auch
Links
Weblinks