LSFD(1) Polecenia uzytkownika LSFD(1) NAZWA lsfd - wypisuje deskryptory plikow SKLADNIA lsfd [opcja] OPIS lsfd ma byc nowoczesnym zamiennikiem lsof(8) w systemach Linux. W przeciwienstwie do lsof, lsfd jest dostosowany do jadra Linux; obsluguje funkcje typowe dla Linuksa, takie jak przestrzenie nazw, uzywajac prostszego kodu. lsfd nie zastepuje bezposrednio lsof; roznia sie interfejsem wiersza polecen oraz formatami wyjsciowymi. Domyslne wyjscie programu moze sie zmienic. Jesli to mozliwe, nalezy zatem unikac uzywania domyslnego wyjscia w swoich skryptach. Prosze zawsze jawnie definiowac oczekiwane kolumny za pomoca opcji --output lista-kolumn w srodowiskach, gdzie wymagane jest stabilne wyjscie. lsfd korzysta z Libsmartcols do filtrowania i formatowania wyjscia. W opisie opcji --output wskazano sposoby dostosowywania formatu wyjsciowego, a w opisie opcji --filter filtrowanie. Polecenie lsfd --list-columns wypisze wszystkie dostepne kolumny. OPCJE -l, --threads Wypisuje na poziomie watkow -J, --json Uzywa formatu wyjsciowego JSON. -n, --noheadings Nie wyswietla naglowkow. -o, --output lista Okresla kolumne wyjsciowa do wyswietlenia. W rozdziale KOLUMNY WYJSCIOWE opisano szczegolowo dostepne kolumny. Domyslna liste kolumn mozna rozszerzyc, jesli liste poda sie w formacie +lista (np. lsfd -o +DELETED). -r, --raw Uzywa surowego formatu wyjsciowego --notruncate Nie przycina tekstu w kolumnach. -p, --pid lista Zbiera informacje tylko dla okreslonych procesow. Lista jest lista identyfikatorow procesow (separatorem jest przecinek). Zob. PRZYKLADY FILTROW. -i[4|6], --inet[=4|=6] Wypisuje tylko gniazda IPv4 i/lub IPv6. -Q, --filter wyrazenie Wypisuje tylko pliki pasujace do warunku reprezentowanego wyrazeniem. Zob. tez scols-filter(5) i PRZYKLADY FILTROW. Opcja -Q wraz z identyfikatorem procesu (np. -Q PID==1) oraz opcja -p (np. -p 1) moga posluzyc do uzyskania tego samego wyniku, jednak stosowanie opcji -p jest znacznie wydajniejsze, poniewaz dziala ona na znacznie wczesniejszym stadium przetwarzania, niz opcja -Q. -C, --counter etykieta:wyrazenie-filtra Definiuje wlasny licznik stosowany w wyjsciu --summary. lsfd tworzy licznik nazwany etykieta. Podczas zbierania informacji, lsfd zlicza pliki pasujace do wyrazenia-filtra i umieszcza wynik w liczniku nazwanym etykieta. Przed zliczaniem, lsfd stosuje filtry zdefiniowane opcja --filter; pliki wylaczone filtrami nie sa zliczane. Prosze zapoznac sie podrecznikiem scols-filter(5), aby uzyskac informacje o wyrazeniu-filtra. Etykieta nie powinna zawierac znakow { i :. Mozna zdefiniowac wiele licznikow, podajac te opcje wielokrotnie. Zob. tez PRZYKLADY LICZNIKOW. --summary[=tryb] Opcja kontroluje wypisywanie wierszy podsumowania. Opcjonalnym argumentem tryb moze byc only (wylacznie), append (dolaczaj) lub never (nigdy). Jesli pominie sie argument tryb, przyjmuje on wartosc domyslna only. Podsumowanie zglasza liczniki. Licznik sklada sie z etykiety i wartosci calkowitej. --counter jest opcja sluzaca do definiowania licznika. Jesli uzytkownik nie zdefiniuje licznika, lsfd uzyje definicji predefiniowanych, wbudowanych licznikow (domyslne liczniki), do tworzenia podsumowania wyjscia. OSTRZEZENIE: Korzystanie z --summary wraz z --json moze spowodowac nieprawidlowe wyjscie. Prawidlowe jest jedynie laczenie --summary=only z --json. --debug-filter Zrzuca wewnetrzna strukture danych filtra i wychodzi. Przydatne tylko dla rozwijajacych narzedzie lsfd. --dump-counters Zrzuca definicje licznikow stosowanych w wyniku --summary. --hyperlink[=kiedy] Wypisuje sciezki punktow montowan jako odnosniki na terminalu. Opcjonalny argument kiedy mozna ustawic na always (zawsze), never (nigdy) lub auto. Jesli pominie sie argument, to domyslnie przyjmuje wartosc auto oznaczajaca, ze odnosniki beda uzywane tylko wtedy, gdy wyjsciem jest terminal. -H, --list-columns Wypisuje kolumny, ktore mozna podac razem z opcja --output. Mozna stosowac w polaczeniu z --json lub --raw, aby uzyskac wynik w formacie czytelnym maszynowo. -h, --help Wyswietla ten tekst i wychodzi. -V, --version Wyswietla wersje i wychodzi. SRODOWISKO LIBSMARTCOLS_DEBUG=all wlacza wyjscie debugowania libsmartcols. LIBSMARTCOLS_DEBUG_PADDING=on uzywa widocznych znakow wypelnienia. KOLUMNY WYJSCIOWE Kazda kolumna posiada typ. Typy sa ograniczone znakami < i >. OSTRZEZENIE: Nazwy i typy kolumn nie sa jeszcze stabilne. Moga sie zmienic w przyszlych wydaniach. AINODECLASS Klasa anonimowego i-wezla. ASSOC Powiazanie miedzy plikiem i procesem. BLKDRV Nazwa sterownika urzadzenia blokowego przyznana przez /proc/devices. BPF-MAP.ID Identyfikator mapy bpf. BPF-MAP.TYPE Zdekodowana nazwy typu mapy bpf. BPF-MAP.TYPE.RAW Typ mapy bpf (surowy). BPF.NAME Nazwa obiektu bpf. BPF-PROG.ID Identyfikator programu bpf. BPF-PROG.TAG TAG programu bpf. BPF-PROG.TYPE Zdekodowana nazwa typu programu bpf. BPF-PROG.TYPE.RAW Typ programu bpf (surowy). CHRDRV Nazwa sterownika urzadzenia znakowego przyznana przez /proc/devices. COMMAND Polecenie procesu otwierajacego plik. DELETED Osiagalnosc z systemu plikow. DEV Identyfikator urzadzenia zawierajacego plik. DEVTYPE Typ urzadzenia (blk, char lub nodev). ENDPOINTS Informacje o koncowkach IPC skomunikowanych z deskryptorem pliku. lsfd zbiera koncowki w procesach skanowanych przez lsfd; lsfd moze pominac pewne koncowki, jesli ograniczy sie procesy opcja -p. Format kolumn zalezy od obiektu powiazanego z deskryptorem pliku: typ FIFO, typ mqueue, zrodla ptmx i pts PID,POLECENIE,POWIAZANIE[-r][-w] Ostatnie znaki ([-r][-w]) reprezentuja tryb do odczytu i/lub do zapisu punktu koncowego. typ eventfd PID,POLECENIE,POWIAZANIE UNIX Rownowazne UNIX-STREAM. W kontenerze, lsfd moze nie wypelnic kolumny ENDPOINTS. Do zbierania informacji o koncowkach UNIX lsfd stosuje sock_diag(7). SELinux moze ograniczyc uzywanie sock_diag w kontenerze. Mozna usunac to ograniczenie ustawiajac wartosc logiczna virt_sandbox_use_netlink na 1. Wiecej informacji w podreczniku container_selinux(8). UNIX-STREAM PID,POLECENIE,POWIAZANIE[-r?][-w?] Informacja o ostatnich znakach ([-r?][-w?]) znajduje sie w opisie SOCK.SHUTDOWN. EVENTFD.ID Identyfikator eventfd. EVENTPOLL.TFDS Deskryptory plikow wskazywane przez plik eventpoll. FD Deskryptor pliku danego pliku. FLAGS Znaczniki podane przy otwieraniu pliku. FUID Numeryczny identyfikator uzytkownika wlasciciela pliku. INET.LADDR Lokalny adres IP. INET.RADDR Zdalny adres IP. INET6.LADDR Lokalny adres IP6. INET6.RADDR Zdalny adres IP6. INODE Numer i-wezla. INOTIFY.INODES Wersja INOTIFY.INODES.RAW z ciasteczkiem. Format elementu to: numer-i-wezla,zrodlo-i-wezla. INOTIFY.INODES.RAW Lista i-wezlow monitorowania. Format elementu to: numer-i-wezla,glowny-numer-urzadzenia:poboczny-numer-urzadzenia. KNAME Surowa nazwa pliku pozyskana z /proc/pid/fd/deskr-pl lub /proc/pid/map_files/region. KTHREAD Czy proces jest watkiem jadra, czy tez nie. MAJ:MIN Identyfikator urzadzenia w przypadku pliku specjalnego lub identyfikator urzadzenia zawierajacego plik. MAPLEN Dlugosc mapowania pliku (w stronach). MISCDEV Nazwa urzadzenia znakowego misc rozwiazana przez /proc/misc. MNTID Identyfikator montowania. MODE Tryb dostepu (rwx) /r-odczyt, w-zapis, x-wykonanie/. NAME Wersja KNAME z ciasteczkiem. Prawie to samo co KNAME. Niektore pliki maja specjalne formaty i zrodla informacji: AF_VSOCK state=SOCK.STATE type=SOCK.TYPE laddr=VSOCK.LADDR[ raddr=VSOCK.RADDR] raddr nie jest pokazywane dla nasluchujacych gniazd. bpf-map id=BPF-MAP.ID type=BPF-MAP.TYPE[ name=BPF.NAME] bpf-prog id=BPF-PROG.ID type=BPF-PROG.TYPE tag= BPF-PROG.TAG [ name=BPF.NAME] eventpoll tfds=EVENTPOLL.TFDS eventfd id=EVENTFD.ID inotify inodes=INOTIFY.INODES misc:tun iface=TUN.IFACE[ devnetns=TUN.DEVNETNS][ socknetns=SOCK.NETNS] NETLINK protocol=NETLINK.PROTOCOL[ lport=NETLINK.LPORT[ group=NETLINK.GROUPS]] PACKET type=SOCK.TYPE[ protocol=PACKET.PROTOCOL][ iface=PACKET.IFACE] pidfd pid=TARGET-PID comm=TARGET-COMMAND nspid=TARGET-NSPIDS lsfd pozyskuje TARGET-PID i TARGET-NSPIDS z /proc/pid/fdinfo/deskr-pl. PING state=SOCK.STATE[ id=PING.ID][ laddr=INET.LADDR [ raddr=INET.RADDR]] PINGv6 state=SOCK.STATE[ id=PING.ID][ laddr=INET6.LADDR [ raddr=INET6.RADDR]] ptmx tty-index=PTMX.TTY-INDEX lsfd pozyskuje PTMX.TTY-INDEX z /proc/pid/fdinfo/deskr-pl. RAW state=SOCK.STATE[ protocol=RAW.PROTOCOL [ laddr=INET.LADDR [ raddr=INET.RADDR]]] RAWv6 state=SOCK.STATE[ protocol=RAW.PROTOCOL [ laddr=INET6.LADDR [ raddr=INET6.RADDR]]] signalfd mask=SIGNALFD.MASK TCP, TCPv6 state=SOCK.STATE[ laddr=TCP.LADDR [ raddr=TCP.RADDR]] timerfd clockid=TIMERFD.CLOCKID[ remaining=TIMERFD.REMAINING [ interval=TIMERFD.INTERVAL]] UDP, UDPv6 state=SOCK.STATE[ laddr=UDP.LADDR [ raddr=UDP.RADDR]] lsfd ukrywa raddr= jesli UDP.RADDR wynosi 0.0.0.0 a UDP.RPORT wynosi 0. UDP-LITE, UDPLITEv6 state=SOCK.STATE[ laddr=UDPLITE.LADDR [ raddr=UDPLITE.RADDR]] UNIX-STREAM state=SOCK.STATE[ path=UNIX.PATH] UNIX state=SOCK.STATE[ path=UNIX.PATH] type=SOCK.TYPE Prosze zauwazyc, ze oznaczenia (deleted) sa usuwane z tej kolumny. Aby poznac mozliwosc odczytu pliku z systemu plikow prosze sprawdzic KNAME, DELETED, lub XMODE. NETLINK.GROUPS Grupy multicastowe netlink. NETLINK.LPORT Identyfikator lokalnego portu netlink. NETLINK.PROTOCOL Protokol netlink. NLINK Liczba dowiazan. NS.NAME Nazwa (NS.TYPE:[INODE]) przestrzeni nazw okreslonej w pliku. NS.TYPE Typ przestrzeni nazw podanej z plikiem. Typem jest mnt, cgroup, uts, ipc, user, pid, net, time lub unknown (nieznany). OWNER Wlasciciel pliku. PACKET.IFACE Nazwa interfejsu powiazana z gniazdem pakietu. PACKET.PROTOCOL Nazwa protokolu L2 powiazana z gniazdem pakietu (zdekodowana). PACKET.PROTOCOL.RAW Numer protokolu L2 powiazanego z gniazdem pakietu (surowy). PARTITION Nazwa urzadzenia blokowego przypisana przez /proc/partition. PID PID procesu otwierajacego plik. PIDFD.COMM Polecenie procesu wskazywanego przez pidfd. PIDFD.NSPID Wartosc pola NSpid w /proc/pid/fdinfo/deskr-pl danego pidfd. Cytat z pliku zrodlowego kernel/fork.c Linuksa: Jesli obslugiwane sa przestrzenie nazw pid, to funkcja ta wypisze rowniez pid danego pidfd (deskryptora pliku) odnoszacego sie do wszystkich potomnych przestrzeni nazw pid danego wystapienia, rozpoczynajacych sie od biezacej przestrzeni nazw pid tj. pole Pid i pierwszy wpis w polu NSpid, beda identyczne. Prosze zauwazyc, ze rozni sie to od pol Pid i NSpid w /proc//status gdzie Pid i NSpid sa pokazywane zawsze w odniesieniu do przestrzeni nazw pid wystapienia procfs. PIDFD.PID PID procesu wskazywanego przez pidfd (deskryptor pliku). PING.ID <`liczba`> Identyfikator zadania echo ICMP uzyty w gniezdzie PING. POS Pozycja pliku. RAW.PROTOCOL Nazwa protokolu surowego gniazda (zdekodowana). Note Typem danych tej kolumny byla pomiedzy v2.39 a v2.41. RAW.PROTOCOL.RAW Numer protokolu surowego gniazda (surowy). RDEV Identyfikator urzadzenia (jesli to plik specjalny). SIGNALFD.MASK Zamaskowane sygnaly. SIZE Rozmiar pliku. SOCK.LISTENING Gniazdo nasluchujace. SOCK.NETS I-wezel identyfikujacy sieciowa przestrzen nazw, do ktorej przynalezy gniazdo. SOCK.PROTONAME Nazwa protokolu. SOCK.SHUTDOWN Stan zamkniecia gniazda. [-r?] Jesli pierwszym znakiem jest r, otrzymywanie jest dozwolone. Jesli jest nim -, otrzymywanie jest niedozwolone. Jesli jest nim ?, stan jest nieznany. [-w?] Jesli drugim znakiem jest w, wysylanie jest dozwolone. Jesli jest nim -, wysylanie jest niedozwolone. Jesli jest nim ?, stan jest nieznany. SOCK.STATE Stan gniazda. SOCK.TYPE Typ gniazda. Przez typ rozumiemy tu drugi parametr wywolania systemowego gniazda: o stream o dgram o raw o rdm o seqpacket o dccp o packet SOURCE System plikow, partycja lub urzadzenie zawierajace plik. W przypadku powiazan majacych jako wartosc kolumny TYPE lancuch ERROR (blad), lsfd wypelnia te kolumne wartoscia syscall:_errno_. STTYPE Surowe typy pliku zwracane przez stat(2): BLK, CHR, DIR, FIFO, LINK, REG, SOCK lub UNKN. TCP.LADDR Lokalny adres L3 (INET.LADDR lub INET6.LADDR) oraz lokalny port TCP. TCP.LPORT Lokalny port TCP. TCP.RADDR Zdalny adres L3 (INET.LADDR lub INET6.LADDR) oraz zdalny port TCP. TCP.RPORT Zdalny port TCP. TID Identyfikator watku procesu otwierajacego plik. TIMERFD.CLOCKID Identyfikator czasomierza. TIMERFD.INTERVAL Interwal. TIMERFD.REMAINING Pozostaly czas. PTMX.TTY-INDEX Indeks TTY drugiej strony. TUN.DEVNETNS I-wezel identyfikujacy sieciowa przestrzen nazw, do ktorej przynalezy urzadzenie. TUN.IFACE Interfejs sieciowy urzadzenia tun. TYPE Aplikacyjna wersja STTYPE. To samo co STTYPE z wyjatkami. W przypadku SOCK, wypisuje wartosc SOCK.PROTONAME. W przypadku UNKN, wypisuje wartosc AINODECLASS jesli SOURCE wynosi anon_inodefs. Jesli lsfd otrzyma blad przy wywolaniu wywolania systemowego, w celu uzyskania informacji o docelowym deskryptorze pliku, lsfd wypelni te kolumne dla danej pozycji lancuchem ERROR. UDP.LADDR Lokalny adres IP i lokalny port UDP. UDP.LPORT Lokalny port UDP. UDP.RADDR Zdalny adres IP i zdalny port UDP. UDP.RPORT Zdalny port UDP. UDPLITE.LADDR Lokalny adres IP i lokalny port UDPLite. UDPLITE.LPORT Lokalny port UDP. UDPLITE.RADDR Zdalny adres IP i zdalny port UDPLite. UDPLITE.RPORT Zdalny port UDP. UID Numer identyfikatora uzytkownika. UNIX.IPEER Numer i-wezla drugiej strony gniazda domeny Uniksa. Jesli lsfd dziala w kontenerze, moze nie wypelnic kolumny UNIX.IPEER. Wiecej szczegolow w opisie UNIX w kolumnie ENDPOINTS. UNIX.PATH Sciezka systemu plikow gniazda domeny uniksowej. USER Uzytkownik procesu. VSOCK.LADDR , VSOCK.RADDR Lokalny adres VSOCK. Formatem tego elementu jest VSOCK.LCID:VSOCK.LPORT. Znane CID-y zostana zdekodowane: "*", "hypervisor", "local" i "host". Znane porty zostana zdekodowane: "*". VSOCK.LCID , VSOCK.RCID Lokalny oraz zdalny identyfikator kontekstu VSOCK. VSOCK.LPORT , VSOCK.RPORT Lokalny oraz zdalny port VSOCK. XMODE Rozszerzona wersja MODE. Kolumna ta moze sie w przyszlosci powiekszac; nowe litery moga byc dodane do XMODE gdy lsfd zyska obsluge nowego stanu deskryptora pliku i/lub mapowania pamieci. [-r] otwarcie mapowania do odczytu. Wystepuje tez w MODE. [-w] otwarcie mapowania do zapisu. Wystepuje tez w MODE. [-x] zmapowany do wykonania kodu. Wystepuje tez w MODE. [-D] usuniety z systemu plikow. Zob. tez DELETED. [-Ll] zablokowany lub wydzierzawiony. l reprezentuje blokade odczytu lub blokade dzielona lub dzierzawe odczytu.L reprezentuje blokade zapisu lub blokade na wylacznosc lub dzierzawe zapisu. Jesli zarowno blokady lub dzierzawy odczytu/dzielone jak i zapisu/na wylacznosc sa zajete przez deskryptor plikow, jako flaga stosowane jest L. [-m] Zwielokrotniony (multiplexed). Jesli deskryptor pliku jest celem pliku eventpoll albo klasycznych wywolan systemowych zwielokrotniania (select(2), pselect(2), poll(2) i ppoll(2)), ustawiana jest ta flaga bitowa. Prosze zauwazyc, ze jesli przywolanie klasycznego wywolania systemowego zostanie przerwane, moze nie dojsc do oznaczenia przez lsfd jako m deskryptora pliku monitorowanego przez przywolanie. Zob. restart_syscall(2). PRZYKLADY FILTROW lsfd posiada kilka opcji filtrowania. Zwykle wystarczy znajomosc opcji -Q (lub --filter). W polaczeniu z opcja -o (lub --output) mozna dostosowac wyjscie do swoich potrzeb. Wypisuje pliki zwiazane z procesami PID 1 i PID 2 # lsfd -Q '(PID == 1) or (PID == 2)' To samo, w inny sposob: # lsfd -Q '(PID == 1) || (PID == 2)' To samo, wydajniej: # lsfd --pid 1,2 Zamiast przecinkow mozna zastosowac biale znaki: # lsfd --pid '1 2' Wykorzystuje pidof(1) do wypisania plikow zwiazanych 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 sposob: # lsfd -Q '(PID == 1) && (FD == 1)' Wypisuje wszystkie dzialajace pliki wykonywalne: # lsfd -Q 'ASSOC == "exe"' To samo, w inny sposob: # lsfd -Q 'ASSOC eq "exe"' To samo, ale wypisujac tylko nazwy plikow: # lsfd -o NAME -Q 'ASSOC eq "exe"' | sort -u Wypisuje usuniete pliki zwiazane z procesami: # lsfd -Q 'DELETED' Wypisuje pliki inne niz zwykle: # lsfd -Q 'TYPE != "REG"' Wypisuje urzadzenia blokowe: # lsfd -Q 'DEVTYPE == "blk"' To samo, uzywajac kolumny TYPE: # lsfd -Q 'TYPE == "BLK"' Wypisuje pliki zawierajace 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 wygasajace w ciagu 0,5 sekundy # lsfd -Q '(TIMERFD.remaining < 0.5) and (TIMERFD.remaining > 0.0)' Wypisuje procesy komunikujace sie za pomoca gniazd strumieni uniksowych: # lsfd -Q 'TYPE == "UNIX-STREAM" && UNIX.PATH =~ ".+"' -oUNIX.PATH,PID,COMMAND,FD,SOCK.STATE,ENDPOINTS Wypisuje procesy komunikujace sie za pomoca danego gniazda strumienia uniksowego: # lsfd -Q 'TYPE == "UNIX-STREAM" && UNIX.PATH == "@/tmp/.X11-unix/X0"' -oUNIX.PATH,PID,COMMAND,FD,SOCK.STATE,ENDPOINTS PRZYKLADY LICZNIKOW Zglasza liczbe deskryptorow gniazd netlink oraz deskryptorow 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 czescia pakietu util-linux od v2.38. AUTORZY Masatake YAMATO , Karel Zak ZOBACZ TAKZE bpftool(8), bps(8), lslocks(8), lsof(8), pidof(1), proc(5), scols-filter(5), socket(2), ss(8), stat(2), vsock(7) ZGLASZANIE BLEDOW Problemy nalezy zglaszac w systemie sledzenia bledow . DOSTEPNOSC Polecenie lsfd jest czescia pakietu util-linux, ktory mozna pobrac ze strony Archiwum jadra Linux . util-linux 2.42.3 2026-09-02 LSFD(1)