| LSFD(1) | Polecenia użytkownika | LSFD(1) |
NAZWA
lsfd - wypisuje deskryptory plików
SKŁADNIA
lsfd [opcja]
OPIS
lsfd ma być nowoczesnym zamiennikiem lsof(8) w systemach Linux. W przeciwieństwie do lsof, lsfd jest dostosowany do jądra Linux; obsługuje funkcje typowe dla Linuksa, takie jak przestrzenie nazw, używając prostszego kodu. lsfd nie zastępuje bezpośrednio lsof; różnią się interfejsem wiersza poleceń oraz formatami wyjściowymi.
Domyślne wyjście programu może się zmienić. Jeśli to możliwe, należy zatem unikać używania domyślnego wyjścia w swoich skryptach. Proszę zawsze jawnie definiować oczekiwane kolumny za pomocą opcji --output lista-kolumn w środowiskach, gdzie wymagane jest stabilne wyjście.
lsfd korzysta z Libsmartcols do filtrowania i formatowania wyjścia. W opisie opcji --output wskazano sposoby dostosowywania formatu wyjściowego, a w opisie opcji --filter filtrowanie. Polecenie lsfd --list-columns wypisze wszystkie dostępne kolumny.
OPCJE
-l, --threads
-J, --json
-n, --noheadings
-o, --output lista
Domyślną listę kolumn można rozszerzyć, jeśli listę poda się w formacie +lista (np. lsfd -o +DELETED).
-r, --raw
--notruncate
-p, --pid lista
-i[4|6], --inet[=4|=6]
-Q, --filter wyrażenie
Opcja -Q wraz z identyfikatorem procesu (np. -Q PID==1) oraz opcja -p (np. -p 1) mogą posłużyć do uzyskania tego samego wyniku, jednak stosowanie opcji -p jest znacznie wydajniejsze, ponieważ działa ona na znacznie wcześniejszym stadium przetwarzania, niż opcja -Q.
-C, --counter etykieta:wyrażenie-filtra
Proszę zapoznać się podręcznikiem scols-filter(5), aby uzyskać informacje o wyrażeniu-filtra. Etykieta nie powinna zawierać znaków { i :. Można zdefiniować wiele liczników, podając tę opcję wielokrotnie. Zob. też PRZYKŁADY LICZNIKÓW.
--summary[=tryb]
Podsumowanie zgłasza liczniki. Licznik składa się z etykiety i wartości całkowitej. --counter jest opcją służącą do definiowania licznika. Jeśli użytkownik nie zdefiniuje licznika, lsfd użyje definicji predefiniowanych, wbudowanych liczników (domyślne liczniki), do tworzenia podsumowania wyjścia.
OSTRZEŻENIE: Korzystanie z --summary wraz z --json może spowodować nieprawidłowe wyjście. Prawidłowe jest jedynie łączenie --summary=only z --json.
--debug-filter
--dump-counters
--hyperlink[=kiedy]
-H, --list-columns
-h, --help
-V, --version
ŚRODOWISKO
LIBSMARTCOLS_DEBUG=all
LIBSMARTCOLS_DEBUG_PADDING=on
KOLUMNY WYJŚCIOWE
Każda kolumna posiada typ. Typy są ograniczone znakami < i >.
OSTRZEŻENIE: Nazwy i typy kolumn nie są jeszcze stabilne. Mogą się zmienić w przyszłych wydaniach.
AINODECLASS <łańcuch>
ASSOC <łańcuch>
BLKDRV <łańcuch>
BPF-MAP.ID <liczba>
BPF-MAP.TYPE <łańcuch>
BPF-MAP.TYPE.RAW <liczba>
BPF.NAME <łańcuch>
BPF-PROG.ID <liczba>
BPF-PROG.TAG <łańcuch>
BPF-PROG.TYPE <łańcuch>
BPF-PROG.TYPE.RAW <liczba>
CHRDRV <łańcuch>
COMMAND <łańcuch>
DELETED <wartość logiczna>
DEV <łańcuch>
DEVTYPE <łańcuch>
ENDPOINTS <łańcuch>
lsfd zbiera końcówki w procesach skanowanych przez lsfd; lsfd może pominąć pewne końcówki, jeśli ograniczy się procesy opcją -p.
Format kolumn zależy od obiektu powiązanego z deskryptorem pliku:
typ FIFO, typ mqueue, źródła ptmx i pts
Ostatnie znaki ([-r][-w]) reprezentują tryb do odczytu i/lub do zapisu punktu końcowego.
typ eventfd
UNIX
W kontenerze, lsfd może nie wypełnić kolumny ENDPOINTS. Do zbierania informacji o końcówkach UNIX lsfd stosuje sock_diag(7). SELinux może ograniczyć używanie sock_diag w kontenerze. Można usunąć to ograniczenie ustawiając wartość logiczną virt_sandbox_use_netlink na 1. Więcej informacji w podręczniku container_selinux(8).
UNIX-STREAM
Informacja o ostatnich znakach ([-r?][-w?]) znajduje się w opisie SOCK.SHUTDOWN.
EVENTFD.ID <liczba>
EVENTPOLL.TFDS <łańcuch>
FD <liczba>
FLAGS <łańcuch>
FUID <liczba>
INET.LADDR <łańcuch>
INET.RADDR <łańcuch>
INET6.LADDR <łańcuch>
INET6.RADDR <łańcuch>
INODE <liczba>
INOTIFY.INODES <łańcuch>
INOTIFY.INODES.RAW <łańcuch>
KNAME <łańcuch>
KTHREAD <wartość logiczna>
MAJ:MIN <łańcuch>
MAPLEN <liczba>
MISCDEV <łańcuch>
MNTID <liczba>
MODE <łańcuch>
NAME <łańcuch>
Niektóre pliki mają specjalne formaty i źródła informacji:
AF_VSOCK
raddr nie jest pokazywane dla nasłuchujących gniazd.
bpf-map
bpf-prog
eventpoll
eventfd
inotify
misc:tun
NETLINK
PACKET
pidfd
lsfd pozyskuje TARGET-PID i TARGET-NSPIDS z /proc/pid/fdinfo/deskr-pl.
PING
PINGv6
ptmx
lsfd pozyskuje PTMX.TTY-INDEX z /proc/pid/fdinfo/deskr-pl.
RAW
RAWv6
signalfd
TCP, TCPv6
timerfd
UDP, UDPv6
lsfd ukrywa raddr= jeśli UDP.RADDR wynosi 0.0.0.0 a UDP.RPORT wynosi 0.
UDP-LITE, UDPLITEv6
UNIX-STREAM
UNIX
Proszę zauważyć, że oznaczenia
(deleted) są usuwane z tej kolumny. Aby
poznać możliwość odczytu pliku z systemu
plików proszę sprawdzić KNAME, DELETED,
lub XMODE.
NETLINK.GROUPS <liczba>
NETLINK.LPORT <liczba>
NETLINK.PROTOCOL <łańcuch>
NLINK <liczba>
NS.NAME <łańcuch>
NS.TYPE <łańcuch>
OWNER <łańcuch>
PACKET.IFACE <łańcuch>
PACKET.PROTOCOL <łańcuch>
PACKET.PROTOCOL.RAW <liczba>
PARTITION <łańcuch>
PID <liczba>
PIDFD.COMM <łańcuch>
PIDFD.NSPID <łańcuch>
Cytat z pliku źródłowego kernel/fork.c Linuksa:
Jeśli obsługiwane są przestrzenie nazw pid, to funkcja ta wypisze również pid danego pidfd (deskryptora pliku) odnoszącego się do wszystkich potomnych przestrzeni nazw pid danego wystąpienia, rozpoczynających się od bieżącej przestrzeni nazw pid tj. pole Pid i pierwszy wpis w polu NSpid, będą identyczne.
Proszę zauważyć, że
różni się to od pól Pid i NSpid w
/proc/<pid>/status gdzie Pid i NSpid są pokazywane zawsze w
odniesieniu do przestrzeni nazw pid wystąpienia procfs.
PIDFD.PID <liczba>
PING.ID <`liczba`>
POS <liczba>
RAW.PROTOCOL <łańcuch>
Note
Typem danych tej kolumny była <liczba> pomiędzy v2.39 a v2.41.
RAW.PROTOCOL.RAW <liczba>
RDEV <łańcuch>
SIGNALFD.MASK <łańcuch>
SIZE <liczba>
SOCK.LISTENING <wartość logiczna>
SOCK.NETS <liczba>
SOCK.PROTONAME <łańcuch>
SOCK.SHUTDOWN <łańcuch>
[-r?]
[-w?]
SOCK.STATE <łańcuch>
SOCK.TYPE <łańcuch>
SOURCE <łańcuch>
STTYPE <łańcuch>
TCP.LADDR <łańcuch>
TCP.LPORT <liczba>
TCP.RADDR <łańcuch>
TCP.RPORT <liczba>
TID <liczba>
TIMERFD.CLOCKID <łańcuch>
TIMERFD.INTERVAL <liczba>
TIMERFD.REMAINING <number>
PTMX.TTY-INDEX <liczba>
TUN.DEVNETNS <liczba>
TUN.IFACE <łańcuch>
TYPE <łańcuch>
Jeśli lsfd otrzyma błąd przy wywołaniu wywołania systemowego, w celu uzyskania informacji o docelowym deskryptorze pliku, lsfd wypełni tę kolumnę dla danej pozycji łańcuchem ERROR.
UDP.LADDR <łańcuch>
UDP.LPORT <liczba>
UDP.RADDR <łańcuch>
UDP.RPORT <liczba>
UDPLITE.LADDR <łańcuch>
UDPLITE.LPORT <liczba>
UDPLITE.RADDR <łańcuch>
UDPLITE.RPORT <liczba>
UID <liczba>
UNIX.IPEER <liczba>
Jeśli lsfd działa w kontenerze, może nie wypełnić kolumny UNIX.IPEER. Więcej szczegółów w opisie UNIX w kolumnie ENDPOINTS.
UNIX.PATH <łańcuch>
USER <łańcuch>
VSOCK.LADDR <łańcuch>, VSOCK.RADDR <łańcuch>
Znane CID-y zostaną zdekodowane: “*”, “hypervisor”, “local” i “host”. Znane porty zostaną zdekodowane: “*”.
VSOCK.LCID <liczba>, VSOCK.RCID <liczba>
VSOCK.LPORT <liczba>, VSOCK.RPORT <liczba>
XMODE <łańcuch>
[-r]
[-w]
[-x]
[-D]
[-Ll]
[-m]
PRZYKŁADY FILTRÓW
lsfd posiada kilka opcji filtrowania. Zwykle wystarczy znajomość opcji -Q (lub --filter). W połączeniu z opcją -o (lub --output) można dostosować wyjście do swoich potrzeb.
Wypisuje pliki związane z procesami PID 1 i PID 2
# lsfd -Q '(PID == 1) or (PID == 2)'
To samo, w inny sposób:
# lsfd -Q '(PID == 1) || (PID == 2)'
To samo, wydajniej:
# lsfd --pid 1,2
Zamiast przecinków można zastosować białe znaki:
# lsfd --pid '1 2'
Wykorzystuje pidof(1) do wypisania plików związanych z programem "firefox":
# lsfd --pid "$(pidof firefox)"
Wypisuje pierwszy deskryptor pliku otwartego przez proces PID 1:
# lsfd -Q '(PID == 1) and (FD == 1)'
To samo, w inny sposób:
# lsfd -Q '(PID == 1) && (FD == 1)'
Wypisuje wszystkie działające pliki wykonywalne:
# lsfd -Q 'ASSOC == "exe"'
To samo, w inny sposób:
# lsfd -Q 'ASSOC eq "exe"'
To samo, ale wypisując tylko nazwy plików:
# lsfd -o NAME -Q 'ASSOC eq "exe"' | sort -u
Wypisuje usunięte pliki związane z procesami:
# lsfd -Q 'DELETED'
Wypisuje pliki inne niż zwykłe:
# lsfd -Q 'TYPE != "REG"'
Wypisuje urządzenia blokowe:
# lsfd -Q 'DEVTYPE == "blk"'
To samo, używając kolumny TYPE:
# lsfd -Q 'TYPE == "BLK"'
Wypisuje pliki zawierające katalog "dconf" w swoich nazwach:
# lsfd -Q 'NAME =~ ".\*/dconf/.*"'
Wypisuje pliki otwarte w maszynie wirtualnej QEMU:
# lsfd -Q '(COMMAND =~ ".\*qemu.*") and (FD >= 0)'
Wypisuje pliki timerfd wygasające w ciągu 0,5 sekundy
# lsfd -Q '(TIMERFD.remaining < 0.5) and (TIMERFD.remaining > 0.0)'
Wypisuje procesy komunikujące się za pomocą gniazd strumieni uniksowych:
# lsfd -Q 'TYPE == "UNIX-STREAM" && UNIX.PATH =~ ".+"' -oUNIX.PATH,PID,COMMAND,FD,SOCK.STATE,ENDPOINTS
Wypisuje procesy komunikujące się za pomocą danego gniazda strumienia uniksowego:
# lsfd -Q 'TYPE == "UNIX-STREAM" && UNIX.PATH == "@/tmp/.X11-unix/X0"' -oUNIX.PATH,PID,COMMAND,FD,SOCK.STATE,ENDPOINTS
PRZYKŁADY LICZNIKÓW
Zgłasza liczbę deskryptorów gniazd netlink oraz deskryptorów gniazd uniksowych:
# lsfd --summary=only \
-C 'netlink sockets':'(NAME =~ "NETLINK:.*")' \
-C 'unix sockets':'(NAME =~ "UNIX:.*")'
VALUE COUNTER
57 netlink sockets
1552 unix sockets
To samo, lecz wypisuje w formacie JSON:
# 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"
}
]
}
HISTORIA
Polecenie lsfd jest częścią pakietu util-linux od v2.38.
AUTORZY
Masatake YAMATO <yamato@redhat.com>, Karel Zak <kzak@redhat.com>
ZOBACZ TAKŻE
bpftool(8), bps(8), lslocks(8), lsof(8), pidof(1), proc(5), scols-filter(5), socket(2), ss(8), stat(2), vsock(7)
ZGŁASZANIE BŁĘDÓW
Problemy należy zgłaszać w systemie śledzenia błędów https://github.com/util-linux/util-linux/issues.
DOSTĘPNOŚĆ
Polecenie lsfd jest częścią pakietu util-linux, który można pobrać ze strony Archiwum jądra Linux https://www.kernel.org/pub/linux/utils/util-linux/.
| 2026-09-02 | util-linux 2.42.3 |