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}}“
 
Keine Bearbeitungszusammenfassung
 
(16 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 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.&nbsp;B.&nbsp;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>


Zeile 9: Zeile 99:
=== Siehe auch ===
=== Siehe auch ===
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
==== Links ====
==== Links ====
===== Weblinks =====
===== Weblinks =====
</noinclude>
# 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/Befehl]]
[[Kategorie:Linux/Befehl]]
[[Kategorie:Linux/Prozesse]]
[[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

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

Links

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