Lsof

Aus xinux.net
Zur Navigation springen Zur Suche springen

Funktion

lsof zeigt geöffnete Dateien, Verzeichnisse, Unixsockets, IP-Sockets und Pipes an. Mit den passenden Optionen aufgerufen, zeigt es z.B.

  • alle Dateien und Netzverbindungen, die ein bestimmter Prozess geöffnet hat,
  • alle Prozesse, die eine bestimmte Datei oder Netzverbindung geöffnet haben oder
  • die Namen aller Prozesse, die auf eine Netzverbindung warten.

Optionen

Option Zweck
+D Verzeichnis Zugriffe auf die Dateien unterhalb des Verzeichnisses anzeigen
+p PIDs Alles anzeigen, was die Prozesse mit diesen PIDs geöffnet haben. Um mehrere PIDs anzugeben, diese mit Komma trennen.
-c Name Alles anzeigen, was die Prozesse geöffnet haben, deren Namen mit diesem Text beginnen.
-u user[,user...] Alles anzeigen, was die Prozesse geöffnet haben, die einem der angegebenen Usernamen oder User-ID gehören. User wird mit ^ negiert.
-i :ports Die Netzverbindungen des Ports anzeigen.
+L 1 Gelöschte Dateien, die noch geöffnet sind.
Ausgabe Option Zweck
-r Sekunden Die Ausgabe regelmäßig wiederholen. Wenn man +r übergibt, beendet sich lsof, sobald die Liste leer ist.
-n Die Ausgabe regelmäßig wiederholen. Wenn man +r übergibt, beendet sich lsof, sobald die Liste leer ist.
-l
-p Portnummern an Stelle von Servicenamen ausgeben.
-t Eine PID-Liste an Stelle der Tabelle ausgeben.
-F gibt die Tabelle (alle Spalten) in einem Format aus, das besonders gut zum Weiterverarbeiten in anderen Programmen geeignet ist.

Beispiele

Wenn root lsof ohne Parameter aufruft, zeigt es alles, was von sämtlichen Prozessen geöffnet ist.

root@zero:~# lsof | more
COMMAND     PID       USER   FD      TYPE     DEVICE      SIZE       NODE NAME
init          1       root  cwd       DIR      104,2      4096          2 /
init          1       root  rtd       DIR      104,2      4096          2 /

Auf diesem System sind dies momentan 2711 geöffnete Objekte

root@zero:~# lsof | wc -l
2711

Wer Benutzt den Midnight Commander?

root@zero:~# lsof /usr/bin/mc  2> /dev/null 
COMMAND  PID   USER  FD   TYPE DEVICE   SIZE   NODE NAME
mc      9344 thomas txt    REG    8,1 561416 896015 /usr/bin/mc

Wer greift auf das CD-Laufwerk zu?

root@zero:~# lsof /dev/cdrom 
COMMAND  PID   USER   FD   TYPE DEVICE SIZE  NODE NAME
bash    9434 thomas  cwd    DIR   11,0 2048 18112 /media/cdrom0

Wer greift auf /usr inklusive Unterverzeichnisse zu?

root@zero:~# lsof +D /usr
...

Welche Dateien benötigen meine Bash?

root@cardassia:~# lsof +p 9450
COMMAND  PID USER   FD   TYPE DEVICE    SIZE    NODE NAME
bash    9450 root  cwd    DIR    8,1    4096   65409 /root
bash    9450 root  rtd    DIR    8,1    4096       2 /
bash    9450 root  txt    REG    8,1  725136 1708789 /bin/bash
...

Auf welche Dateien greift der Xorg-Prozess zu?

root@zero:~# lsof -c X
COMMAND  PID USER   FD   TYPE     DEVICE    SIZE       NODE NAME
Xorg    3132 root  cwd    DIR        8,1    4096      64902 /etc/X11
Xorg    3132 root  rtd    DIR        8,1    4096          2 /
...

Welche Dateien werden zurzeit von nicht Root Usern benutzt?

root@zero:~#
 lsof -u ^root | more
 COMMAND     PID       USER   FD   TYPE     DEVICE     SIZE       NODE NAME
 ntpd       1738        ntp  cwd    DIR        8,1     4096          2 /
 ntpd       1738        ntp  rtd    DIR        8,1     4096          2 /
 ...

Welche Prozesse kommunizieren auf Port 22 miteinander?

root@zero:~# lsof -i :22
COMMAND   PID USER   FD   TYPE  DEVICE SIZE NODE NAME
sshd     3657 root    3u  IPv4   14810       TCP *:ssh (LISTEN)
sshd     3657 root    4u  IPv6   14812       TCP *:ssh (LISTEN)
sshd    23745 root    3u  IPv4 1009411       TCP zero.delta.int:ssh->mordor.alpha.quadrant:46214 (ESTABLISHED)
sshd    25498 root    3u  IPv4 1041201       TCP zero.delta.int:ssh->mordor.alpha.quadrant:38190 (ESTABLISHED)
sshd    25641 root    3u  IPv4 1042316       TCP zero.delta.int:ssh->mordor.alpha.quadrant:38196 (ESTABLISHED)
sshd    32595 root    3u  IPv4 1153784       TCP zero.delta.int:ssh->cardassia.alpha.quadrant:60422 (ESTABLISHED)

Welche Dateien wurden gelöscht, obwohl sie noch offen sind?

root@zero:~# lsof -a +L1  /
...

Welche Programme greifen auf Dateien zu die gelöscht wurden?

root@zero:~# lsof | awk '$5 == "DEL" { print }'