Lsof: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(15 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 | |||
== Beschreibung == | == Beschreibung == | ||
[[File:lsof.png|mini|400px]] | |||
== Ausgabeformat == | |||
;Offene Dateien | |||
* UNIX Domain Sockets (type=unix) | |||
* Reguläre Dateien (type=REG) | |||
* [[FIFO]]s (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 [[Secure Shell|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 == | |||
[[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: 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 [[Bourne-Again Shell|bash]]-Shell mit [[Prozess-ID|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)) | |||
<noinclude> | <noinclude> | ||
Zeile 9: | Zeile 99: | ||
=== Siehe auch === | === Siehe auch === | ||
{{Special:PrefixIndex/{{BASEPAGENAME}}}} | {{Special:PrefixIndex/{{BASEPAGENAME}}}} | ||
==== Links ==== | ==== Links ==== | ||
===== Weblinks ===== | ===== Weblinks ===== | ||
# https://de.wikipedia.org/wiki/Lsof | |||
# https://github.com/lsof-org/lsof | |||
# [http://linux.die.net/man/8/lsof lsof(8)] | |||
[[Kategorie:Linux/Prozesse]] | [[Kategorie:Linux/Prozesse]] | ||
[[Kategorie:Linux/Befehl]] | |||
[[Kategorie:Linux/Datei/Verwaltung]] | |||
{{DEFAULTSORT:lsof}} | {{DEFAULTSORT:lsof}} | ||
</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