10 lsof-Befehlsbeispiele (List of Open Files) unter Linux
Dies ist unsere fortlaufende Reihe von Linux-Befehlen. In diesem Artikel werden wir den Befehl lsof anhand praktischer Beispiele überprüfen. lsof bedeutet „LiSt Open Files“ und wird verwendet, um herauszufinden, welche Dateien von welchem Linux-Prozess geöffnet sind.
Wie wir alle wissen, betrachtet Linux/Unix alles als Datei (Pipes, Sockets, Verzeichnisse, Geräte usw.). Einer der Gründe für die Verwendung des Befehls lsof ist, dass die Bereitstellung einer Festplatte nicht aufgehoben werden kann, da dort angegeben wird, dass die Dateien verwendet werden. Mit Hilfe des Befehls lsof können wir die verwendeten Dateien leicht identifizieren.
1. Listen Sie alle geöffneten Dateien mit dem Befehl lsof auf
Im folgenden Beispiel wird eine lange Liste der geöffneten Dateien angezeigt, von denen einige zum besseren Verständnis extrahiert wurden, wobei die Spalten wie Befehl, PID, USER< angezeigt werden, FD, TYPE, usw.
lsof
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 253,0 4096 2 /
init 1 root rtd DIR 253,0 4096 2 /
init 1 root txt REG 253,0 145180 147164 /sbin/init
init 1 root mem REG 253,0 1889704 190149 /lib/libc-2.12.so
init 1 root 0u CHR 1,3 0t0 3764 /dev/null
init 1 root 1u CHR 1,3 0t0 3764 /dev/null
init 1 root 2u CHR 1,3 0t0 3764 /dev/null
init 1 root 3r FIFO 0,8 0t0 8449 pipe
init 1 root 4w FIFO 0,8 0t0 8449 pipe
init 1 root 5r DIR 0,10 0 1 inotify
init 1 root 6r DIR 0,10 0 1 inotify
init 1 root 7u unix 0xc1513880 0t0 8450 socket
Abschnitte und ihre Werte sind selbsterklärend. Wir werden uns jedoch die Spalten FD & TYPE genauer ansehen.
FD – steht für einen Dateideskriptor und kann einige der Werte wie folgt sehen:
- cwd aktuelles Arbeitsverzeichnis
- rtd-Stammverzeichnis
- txt-Programmtext (Code und Daten)
- mem speicherzugeordnete Datei
Auch in FD sind Spaltennummern wie 1u der eigentliche Dateideskriptor, gefolgt von u,r,w seines Modus als:
- r für Lesezugriff.
- w für Schreibzugriff.
- u für Lese- und Schreibzugriff.
TYP – der Dateien und deren Identifizierung.
- DIR – Verzeichnis
- REG – Reguläre Datei
- CHR – Zeichenspezialdatei.
- FIFO – First In First Out
2. Listen Sie benutzerspezifische geöffnete Dateien auf
Der folgende Befehl zeigt die Liste aller geöffneten Dateien des Benutzers tecmint an.
lsof -u tecmint
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1838 tecmint cwd DIR 253,0 4096 2 /
sshd 1838 tecmint rtd DIR 253,0 4096 2 /
sshd 1838 tecmint txt REG 253,0 532336 188129 /usr/sbin/sshd
sshd 1838 tecmint mem REG 253,0 19784 190237 /lib/libdl-2.12.so
sshd 1838 tecmint mem REG 253,0 122436 190247 /lib/libselinux.so.1
sshd 1838 tecmint mem REG 253,0 255968 190256 /lib/libgssapi_krb5.so.2.2
sshd 1838 tecmint mem REG 253,0 874580 190255 /lib/libkrb5.so.3.3
3. Suchen Sie nach Prozessen, die auf einem bestimmten Port ausgeführt werden
Um alle laufenden Linux-Prozesse eines bestimmten Ports herauszufinden, verwenden Sie einfach den folgenden Befehl mit der Option -i. Das folgende Beispiel listet alle laufenden Prozesse von Port 22 auf.
lsof -i TCP:22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1471 root 3u IPv4 12683 0t0 TCP *:ssh (LISTEN)
sshd 1471 root 4u IPv6 12685 0t0 TCP *:ssh (LISTEN)
4. Listen Sie nur geöffnete IPv4- und IPv6-Dateien auf
Im folgenden Beispiel werden nur IPv4- und IPv6-Netzwerkdateien mit separaten Befehlen geöffnet.
lsof -i 4
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc
rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954
rpcbind 1203 rpc 8u IPv4 11331 0t0 TCP *:sunrpc (LISTEN)
avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns
avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600
# lsof -i 6
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 9u IPv6 11333 0t0 UDP *:sunrpc
rpcbind 1203 rpc 10u IPv6 11335 0t0 UDP *:954
rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
rpc.statd 1277 rpcuser 10u IPv6 11858 0t0 UDP *:55800
rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)
cupsd 1346 root 6u IPv6 12112 0t0 TCP localhost:ipp (LISTEN)
5. Listen Sie die geöffneten Dateien der TCP-Portbereiche 1-1024 auf
Um alle laufenden Prozesse offener Dateien des TCP-Ports aufzulisten, reicht er von 1-1024.
lsof -i TCP:1-1024
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
cupsd 1346 root 7u IPv4 12113 0t0 TCP localhost:ipp (LISTEN)
sshd 1471 root 4u IPv6 12685 0t0 TCP *:ssh (LISTEN)
master 1551 root 13u IPv6 12898 0t0 TCP localhost:smtp (LISTEN)
sshd 1834 root 3r IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)
sshd 1838 tecmint 3u IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)
sshd 1871 root 3r IPv4 15842 0t0 TCP 192.168.0.2:ssh->192.168.0.1:groove (ESTABLISHED)
httpd 1918 root 5u IPv6 15991 0t0 TCP *:http (LISTEN)
httpd 1918 root 7u IPv6 15995 0t0 TCP *:https (LISTEN)
6. Schließen Sie Benutzer mit dem Zeichen „^“ aus
Hier haben wir den Benutzer root ausgeschlossen. Sie können einen bestimmten Benutzer mit ‘^’ mit dem oben gezeigten Befehl ausschließen.
lsof -i -u^root
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc
rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954
rpcbind 1203 rpc 8u IPv4 11331 0t0 TCP *:sunrpc (LISTEN)
rpcbind 1203 rpc 9u IPv6 11333 0t0 UDP *:sunrpc
rpcbind 1203 rpc 10u IPv6 11335 0t0 UDP *:954
rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns
avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600
rpc.statd 1277 rpcuser 5r IPv4 11836 0t0 UDP *:soap-beep
rpc.statd 1277 rpcuser 8u IPv4 11850 0t0 UDP *:55146
rpc.statd 1277 rpcuser 9u IPv4 11854 0t0 TCP *:32981 (LISTEN)
rpc.statd 1277 rpcuser 10u IPv6 11858 0t0 UDP *:55800
rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)
7. Finden Sie heraus, wer welche Dateien und Befehle sucht?
Das folgende Beispiel zeigt, dass der Benutzer tecmint Befehle wie ping und das Verzeichnis /etc verwendet.
lsof -i -u tecmint
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1839 tecmint cwd DIR 253,0 12288 15 /etc
ping 2525 tecmint cwd DIR 253,0 12288 15 /etc
8. Listen Sie alle Netzwerkverbindungen auf
Der folgende Befehl mit der Option ‘-i’ zeigt die Liste aller Netzwerkverbindungen „LISTENING & ESTABLISHED“ an.
lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc
rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954
rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns
avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600
rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)
cupsd 1346 root 6u IPv6 12112 0t0 TCP localhost:ipp (LISTEN)
cupsd 1346 root 7u IPv4 12113 0t0 TCP localhost:ipp (LISTEN)
sshd 1471 root 3u IPv4 12683 0t0 TCP *:ssh (LISTEN)
master 1551 root 12u IPv4 12896 0t0 TCP localhost:smtp (LISTEN)
master 1551 root 13u IPv6 12898 0t0 TCP localhost:smtp (LISTEN)
sshd 1834 root 3r IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)
httpd 1918 root 5u IPv6 15991 0t0 TCP *:http (LISTEN)
httpd 1918 root 7u IPv6 15995 0t0 TCP *:https (LISTEN)
clock-app 2362 narad 21u IPv4 22591 0t0 TCP 192.168.0.2:45284->www.gov.com:http (CLOSE_WAIT)
chrome 2377 narad 61u IPv4 25862 0t0 TCP 192.168.0.2:33358->maa03s04-in-f3.1e100.net:http (ESTABLISHED)
chrome 2377 narad 80u IPv4 25866 0t0 TCP 192.168.0.2:36405->bom03s01-in-f15.1e100.net:http (ESTABLISHED)
9. Suche nach PID
Das folgende Beispiel zeigt nur, dessen PID 1 [One] ist.
lsof -p 1
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 253,0 4096 2 /
init 1 root rtd DIR 253,0 4096 2 /
init 1 root txt REG 253,0 145180 147164 /sbin/init
init 1 root mem REG 253,0 1889704 190149 /lib/libc-2.12.so
init 1 root mem REG 253,0 142472 189970 /lib/ld-2.12.so
10. Beenden Sie alle Aktivitäten eines bestimmten Benutzers
Manchmal müssen Sie möglicherweise alle Prozesse für einen bestimmten Benutzer beenden. Der folgende Befehl beendet alle Prozesse des Benutzers tecmint.
kill -9 `lsof -t -u tecmint`
Hinweis: Hier ist es nicht möglich, Beispiele für alle verfügbaren Optionen zu nennen. Diese Anleitung soll lediglich zeigen, wie der Befehl lsof verwendet werden kann. Weitere Informationen hierzu finden Sie in der Manpage des Befehls lsof. Wenn Sie diesen Artikel für nützlich halten, teilen Sie ihn bitte über unser Kommentarfeld unten mit.