LSFD(1) | Dienstprogramme für Benutzer | LSFD(1) |
BEZEICHNUNG¶
lsfd - Dateideskriptoren auflisten
ÜBERSICHT¶
lsfd [Option]
BESCHREIBUNG¶
lsfd ist als ein moderner Ersatz für lsof(8) auf Linux-Systemen gedacht. Im Gegensatz zu lsof ist lsfd auf den Linux-Kernel spezialisiert; es unterstützt Linux-spezifische Funktionen wie Namensräume mit einfacherem Code. lsfd ist kein direkter Ersatz für lsof, da die Befehlszeilenschnittstellen und Ausgabeformate unterschiedlich sind.
Die Standardausgabe kann sich ändern. Daher sollten Sie vermeiden, die Standardausgabe in Ihren Skripten zu verwenden, wo immer es möglich ist. Definieren Sie in Umgebungen, wo eine stabile Ausgabe erforderlich ist, stets die erwarteten Spalten, indem Sie die Option --output Spaltenliste angeben.
lsfd verwendet Libsmartcols für die Formatierung und Filterung der Ausgabe. Siehe die Beschreibung der Option --output für die Anpassung des Ausgabeformats und die Option --filter für die Filterung. Mit lsfd --list-columns erhalten Sie eine Liste aller verfügbaren Spalten.
OPTIONEN¶
-l, --threads
-J, --json
-n, --noheadings
-o, --output Liste
Die voreingestellte Liste der Spalten kann erweitert werden, indem Sie die Liste im Format +Liste angeben (beispielsweise lsfd -o +DELETED).
-r, --raw
--notruncate
-p, --pid PIDs
Sowohl die Option -Q mit einem Ausdruck, der die Prozesskennung (PID) enthält, z.B. -Q (PID == 1), als auch die Option -p, z.B. -p 1, können das Gleiche ausgeben, aber die Option -p ist effizienter, da sie in einem viel früheren Stadium der Verarbeitung als die Option -Q agiert.
-i[4|6], --inet[=4|=6]
-Q, --filter Ausdruck
-C, --counter Bezeichnung:Filterausdruck
Weitere Informationen zu Filterausdrücken finden Sie in scols-filter(5). Die Bezeichnung sollte weder { noch : enthalten. Indem Sie diese Option mehrfach angeben, können Sie mehrere Zähler definieren.
Siehe auch ZÄHLERBEISPIELE.
--summary[=when]
Die Zusammenfassung meldet Zähler. Ein Zähler besteht aus einer Bezeichnung und einem ganzzahligen Wert. Mit der Option --counter können Sie einen Zähler definieren. Falls Sie keinen Zähler definieren, verwendet lsfd zur Erstellung der Zusammenfassung voreingestellte Zähler (Standardzähler).
ACHTUNG: Die gemeinsame Verwendung von --summary und --json könnte die Ausgabe unbrauchbar machen. Zulässig ist nur die Kombination von --summary=only und --json.
--debug-filter
--dump-counters
--hyperlink[=mode]
-H, --list-columns
-h, --help
-V, --version
AUSGABESPALTEN¶
Jede Spalte hat einen Typ. Die Typen werden in < und > eingefasst.
ACHTUNG: Die Namen und Typen der Spalten sind noch nicht stabil. Sie könnten in zukünftigen Veröffentlichungen geändert werden.
AINODECLASS <Zeichenkette>
ASSOC <Zeichenkette>
BLKDRV <Zeichenkette>
BPF-MAP.ID <Zahl>
BPF-MAP.TYPE <Zeichenkette>
BPF-MAP.TYPE.RAW <Zahl>
BPF.NAME <Zeichenkette>
BPF-PROG.ID <Zahl>
BPF-PROG.TAG <string>
BPF-PROG.TYPE <Zeichenkette>
BPF-PROG.TYPE.RAW <Zahl>
CHRDRV <Zeichenkette>
COMMAND <Zeichenkette>
DELETED <boolesch>
DEV <Zeichenkette>
DEVTYPE <Zeichenkette>
ENDPOINTS <string>
lsfd sammelt Endpunkte innerhalb der Prozesse, die lsfd einliest; lsfd kann einige Endpunkte verfehlen, wenn Sie die Prozesse mit der Option -p eingrenzen.
Das Format der spalte ergibt sich aus dem mit dem Dateideskriptor verbundenen Objekt:
FIFO-Typ, Mqueue-Typ, ptmx- und pts-Quellen
The last characters ([-r][-w]) represent the read and/or write mode of the endpoint.
eventfd-Typ
UNIX-STREAM
Zu den letzten Zeichen ([-r?][-w?]), siehe die Beschreibung von SOCK.SHUTDOWN.
EVENTFD.ID <Zahl>
EVENTPOLL.TFDS <Zeichenkette>
FD <Zahl>
FLAGS <Zeichenkette>
FUID <Zahl>
INET.LADDR <Zeichenkette>
INET.RADDR <Zeichenkette>
INET6.LADDR <Zeichenkette>
INET6.RADDR <Zeichenkette>
INODE <Zahl>
INOTIFY.INODES <Zeichenkette>
INOTIFY.INODES.RAW <Zeichenkette>
KNAME <Zeichenkette>
KTHREAD <boolesch>
MAJ:MIN <Zeichenkette>
MAPLEN <Zahl>
MISCDEV <Zeichenkette>
MNTID <Zahl>
MODE <Zeichenkette>
NAME <Zeichenkette>
Einige Dateien haben spezielle Formate und Informationsquellen:
AF_VSOCK
raddr is not shown for listening sockets.
bpf-map
bpf-prog
eventpoll
eventfd
inotify
misc:tun
NETLINK
PACKET
pidfd
lsfd bezieht TARGET-PID und TARGET-NSPIDS aus /proc/PID/fdinfo/dd.
PING
PINGv6
ptmx
lsfd bezieht PTMX.TTY-INDEX aus /proc/PID/fdinfo/Dateideskriptor.
RAW
RAWv6
signalfd
TCP, TCPv6
timerfd
UDP, UDPv6
lsfd blendet raddr= aus, falls UDP.FERNE-ADRESSE 0.0.0.0 und UDP.FERNER-PORT 0 ist.
UDP-LITE, UDPLITEv6
UNIX-STREAM
UNIX
Beachten Sie, dass »(deleted)«-Markierungen aus
dieser Spalte entfernt sind. Siehe KNAME, DELETED oder
XMODE für die Lesbarkeit der Datei aus dem Dateisystem.
NETLINK.GROUPS <Zahl>
NETLINK.LPORT <Zahl>
NETLINK.PROTOCOL <Zeichenkette>
NLINK <Zahl>
NS.NAME <Zeichenkette>
NS.TYPE <Zeichenkette>
OWNER <Zeichenkette>
PACKET.IFACE <Zeichenkette>
PACKET.PROTOCOL <Zeichenkette>
PARTITION <Zeichenkette>
PID <Zahl>
PIDFD.COMM <Zeichenkette>
PIDFD.NSPID <Zeichenkette>
Zitat aus kernel/fork.c des Linux-Quellbaums:
Falls PID-Namensräume unterstützt werden, dann gibt diese Funktion außerdem die PID des angegebenen PID-Dateideskriptors für alle abhängigen PID-Namensräume aus, beginnend mit dem aktuellen PID-Namensraum der Instanz, das heißt, das PID-Feld und der erste Eintrag im NSpid-Feld werden identisch sein.
Beachten Sie, dass sich dies von den PID- und NSpid-Feldern in
/proc/<PID>/status unterscheidet, wo PID und NSpid stets relativ zum
PID-Namensraum der Procfs-Instanz angezeigt werden.
PIDFD.PID <Zahl>
PING.ID <`Zahl`>
POS <Zahl>
RAW.PROTOCOL <Zahl>
RDEV <Zeichenkette>
SIGNALFD.MASK <Zeichenkette>
SIZE <Zahl>
SOCK.LISTENING <boolesch>
SOCK.NETS <Zahl>
SOCK.PROTONAME <Zeichenkette>
SOCK.SHUTDOWN <Zeichenkette>
[-r?]
[-w?]
SOCK.STATE <Zeichenkette>
SOCK.TYPE <Zeichenkette>
SOURCE <Zeichenkette>
STTYPE <Zeichenkette>
TCP.LADDR <Zeichenkette>
TCP.LPORT <Zahl>
TCP.RADDR <Zeichenkette>
TCP.RPORT <Zahl>
TID <Zahl>
TIMERFD.CLOCKID <Zeichenkette>
TIMERFD.INTERVAL <Zahl>
TIMERFD.REMAINING <Zahl>
PTMX.TTY-INDEX <Zahl>
TUN.IFACE <Zeichenkette>
TYPE <Zeichenkette>
If lsfd gets an error when calling a syscall to know about a target file descriptor, lsfd fills this column for it with ERROR.
UDP.LADDR <Zeichenkette>
UDP.LPORT <Zahl>
UDP.RADDR <Zeichenkette>
UDP.RPORT <Zahl>
UDPLITE.LADDR <Zeichenkette>
UDPLITE.LPORT <Zahl>
UDPLITE.RADDR <Zeichenkette>
UDPLITE.RPORT <Zahl>
UID <Zahl>
UNIX.PATH <Zeichenkette>
USER <Zeichenkette>
VSOCK.LADDR <string>, VSOCK.RADDR <string>
Well-known CIDs will be decoded: “*”, “hypervisor”, “local”, or “host”. Well-known ports will be decoded: “*”.
VSOCK.LCID <number>, VSOCK.RCID <number>
VSOCK.LPORT <number>, VSOCK.RPORT <number>
XMODE <Zeichenkette>
[-r]
[-w]
[-x]
[-D]
[-Ll]
[-m]
FILTERBEISPIELE¶
lsfd verfügt über einige Filteroptionen. In den meisten Fällen genügt es, die Option -Q (oder --filter) zu kennen. In Kombination mit der Option -o (oder --output) können Sie die Ausgabe nach Ihren Wünschen anpassen.
Die mit den mit den Prozesskennungen (PIDs) 1 und 2 assoziierten Dateien auflisten:
# lsfd -Q '(PID == 1) oder (PID == 2)'
Das Gleiche auf alternative Weise:
# lsfd -Q '(PID == 1) || (PID == 2)'
Das Gleiche auf effizientere Weise:
# lsfd --pid 1,2
Whitespaces can be used instead of a comma:
# lsfd --pid '1 2'
pidof(1) für eine Auflistung der Dateien verwenden, die mit »firefox« assoziiert sind:
# lsfd --pid "$(pidof firefox)"
Den ersten Dateideskriptor auflisten, der vom Prozess mit der Prozesskennung (PID) 1 geöffnet wurde:
# lsfd -Q '(PID == 1) and (FD == 1)'
Das Gleiche auf alternative Weise:
# lsfd -Q '(PID == 1) && (FD == 1)'
Alle laufenden ausführbaren Dateien auflisten:
# lsfd -Q 'ASSOC == "exe"'
Das Gleiche auf alternative Weise:
# lsfd -Q 'ASSOC eq "exe"'
Das Gleiche, aber nur Dateinamen ausgeben:
# lsfd -o NAME -Q 'ASSOC eq "exe"' | sort -u
Gelöschte Dateien auflisten, die Prozessen zugeordnet sind:
# lsfd -Q 'DELETED'
Nicht-reguläre Dateien auflisten:
# lsfd -Q 'TYPE != "REG"'
Blockorientierte Geräte auflisten:
# lsfd -Q 'DEVTYPE == "blk"'
Das Gleiche, aber mit der Spalte TYP:
# lsfd -Q 'TYPE == "BLK"'
Dateien auflisten, in deren Namen das Verzeichnis »dconf« enthalten ist:
# lsfd -Q 'NAME =~ ".\*/dconf/.*"'
In einer virtuellen QEMU-Maschine geöffnete Dateien auflisten:
# lsfd -Q '(COMMAND =~ ".\*qemu.*") and (FD >= 0)'
List timerfd files expired within 0.5 seconds:
# lsfd -Q '(TIMERFD.remaining < 0.5) and (TIMERFD.remaining > 0.0)'
List processes communicating via unix stream sockets:
# lsfd -Q 'TYPE == "UNIX-STREAM" && UNIX.PATH =~ ".+"' -oUNIX.PATH,PID,COMMAND,FD,SOCK.STATE,ENDPOINTS
List processes communicating via a specified unix stream socket:
# lsfd -Q 'TYPE == "UNIX-STREAM" && UNIX.PATH == "@/tmp/.X11-unix/X0"' -oUNIX.PATH,PID,COMMAND,FD,SOCK.STATE,ENDPOINTS
ZÄHLERBEISPIELE¶
Die Anzahl der Netlink-Socket-Deskriptoren und Unix-Socket-Deskriptoren ausgeben:
# lsfd --summary=only \
-C 'netlink sockets':'(NAME =~ "NETLINK:.*")' \
-C 'unix sockets':'(NAME =~ "UNIX:.*")' VALUE COUNTER
57 netlink sockets
1552 unix sockets
Das Gleiche, aber im JSON-Format ausgeben:
# lsfd --summary=only --json \
-C 'netlink sockets':'(NAME =~ "NETLINK:.*")' \
-C 'unix sockets':'(NAME =~ "UNIX:.*")' {
"lsfd-summary": [
{
"value": 15,
"counter": "netlink sockets"
},{
"value": 798,
"counter": "unix sockets"
}
] }
GESCHICHTE¶
Der Befehl lsfd ist Teil des Pakets util-linux seit Version 2.38.
AUTOREN¶
Masatake YAMATO <yamato@redhat.com>, Karel Zak <kzak@redhat.com>
SIEHE AUCH¶
bpftool(8), bps(8), lslocks(8), lsof(8), pidof(1), proc(5), scols-filter(5), socket(2), ss(8), stat(2), vsock(7)
FEHLER MELDEN¶
For bug reports, use the issue tracker <https://github.com/util-linux/util-linux/issues>.
VERFÜGBARKEIT¶
Der Befehl lsfd ist Teil des Pakets util-linux, welches aus dem Linux-Kernel-Archiv <https://www.kernel.org/pub/linux/utils/util-linux/> heruntergeladen werden kann.
2025-04-09 | util-linux 2.41 |