Zum Inhalt springen

Lsof: Unterschied zwischen den Versionen

Aus Foxwiki
Die Seite wurde neu angelegt: „{{DISPLAYTITLE:lsof}} '''topic''' - Kurzbeschreibung == Beschreibung == mini|400px <noinclude> == Anhang == === Siehe auch === {{Special:PrefixIndex/{{BASEPAGENAME}}}} ==== Links ==== ===== Weblinks ===== </noinclude> Kategorie:Linux/Befehl Kategorie:Linux/Prozesse {{DEFAULTSORT:lsof}}“
 
K Textersetzung - „ TCP“ durch „ TCP
 
(26 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


'''topic''' - Kurzbeschreibung
== 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 und weitere
 
; 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 beispielsweise 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.&nbsp;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>


== Anhang ==
== Anhang ==
=== Siehe auch ===
=== Siehe auch ===
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}
==== Links ====
 
===== Weblinks =====
=== Links ===
</noinclude>
==== Weblinks ====
# https://de.wikipedia.org/wiki/Lsof
# https://github.com/lsof-org/lsof
# [https://linux.die.net/man/8/lsof lsof(8)]
 
[[Kategorie:Linux/Prozess/Befehl]]
[[Kategorie:Linux/Befehl]]
[[Kategorie:Linux/Befehl]]
[[Kategorie:Linux/Prozesse]]
[[Kategorie:Linux/Datei/Verwaltung]]
 
{{DEFAULTSORT:lsof}}
{{DEFAULTSORT:lsof}}
</noinclude>

Aktuelle Version vom 4. Juli 2026, 11:54 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 und weitere

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 beispielsweise von einigen Scripten, die mit lsof mitgeliefert werden.

Anwendungen

lsof Beispiele

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


  1. https://de.wikipedia.org/wiki/Lsof
  2. https://github.com/lsof-org/lsof
  3. lsof(8)