Zum Inhalt springen

lsof

Aus Foxwiki
Version vom 14. Juni 2026, 00:50 Uhr von Dirkwagner (Diskussion | Beiträge) (Textersetzung - „ “ durch „ “)

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)