LSFD(1) | Comenzi utilizator | LSFD(1) |
NUME
lsfd - listează descriptorii de fișiere
REZUMAT
lsfd [opțiune]
DESCRIERE
lsfd se dorește a fi un înlocuitor modern pentru lsof(8) pe sistemele Linux. Spre deosebire de lsof, lsfd este specializat pentru nucleul Linux; acesta suportă caracteristici specifice Linux, cum ar fi spațiile de nume, cu un cod mai simplu. lsfd nu este un înlocuitor instantaneu pentru lsof; acestea sunt diferite în ceea ce privește interfața liniei de comandă și formatele de ieșire.
Rezultatele implicite pot fi modificate. Așadar, ori de câte ori este posibil, ar trebui să evitați să utilizați ieșirile implicite în scripturile dumneavoastră. Definiți întotdeauna în mod explicit coloanele așteptate folosind --output listă-coloane în mediile în care este necesară o ieșire stabilă.
lsfd utilizează Libsmartcols pentru formatarea și filtrarea ieșirii. A se vedea descrierea opțiunii --output pentru personalizarea formatului de ieșire și a opțiunii --filter pentru filtrare. Utilizați lsfd --list-columns pentru a obține o listă cu toate coloanele disponibile.
OPȚIUNI
-l, --threads
-J, --json
-n, --noheadings
-o, --output listă
Lista implicită de coloane poate fi extinsă dacă lista este specificată în formatul +listă (de exemplu, lsfd -o +DELETED).
-r, --raw
--notruncate
-p, --pid pids
Atât opțiunea -Q cu o expresie care include PID, de exemplu -Q (PID == 1), cât ș i opțiunea -p, de exemplu -p 1, pot imprima aceeași ieșire, dar utilizarea opțiunii -p este mult mai eficientă deoarece opțiunea -p acționează într-o etapă mult mai timpurie a procesării decât opțiunea -Q.
-i[4|6], --inet[=4|=6]
-Q, --filter expresia
-C, --counter eticheta:expresia_filtru
A se vedea scols-filter(5) despre expresia_filtrare. eticheta nu trebuie să includă „{” și nici „:”. Puteți defini mai multe contoare prin specificarea acestei opțiuni de mai multe ori.
A se vedea, de asemenea, EXEMPLE DE CONTORIZARE.
--summary[=când]
În rezumat, programul raportează valorile contoarelor. Un contor este format dintr-o etichetă și o valoare întreagă. --counter este opțiunea de definire a unui contor. Dacă utilizatorul nu definește niciun contor, lsfd utilizează definițiile contoarelor predefinite încorporate (contoare implicite) pentru a realiza rezumatul.
ATENȚIE: Utilizarea --summary și --json poate face ca ieșirea să fie întreruptă. Este valabilă doar combinarea --summary=only și --json.
--debug-filter
--dump-counters
--hyperlink[=mod]
-H, --list-columns
-h, --help
-V, --version
COLOANE DE IEȘIRE
Fiecare coloană este de un tip. Tipurile sunt înconjurate de < și >.
ATENȚIE: Numele și tipurile de coloane nu sunt încă stabile. Acestea pot fi modificate în versiunile viitoare.
AINODECLASS <șir>
ASSOC <șir>
BLKDRV <șir>
BPF-MAP.ID <număr>
BPF-MAP.TYPE <șir>
BPF-MAP.TYPE.RAW <număr>
BPF.NAME <șir>
BPF-PROG.ID <număr>
BPF-PROG.TAG <șir>
BPF-PROG.TYPE <șir>
BPF-PROG.TYPE.RAW <număr>
CHRDRV <șir>
COMMAND <șir>
DELETED <boolean>
DEV <șir>
DEVTYPE <șir>
ENDPOINTS <string>
lsfd colectează punctele finale în cadrul proceselor pe care lsfd le scanează; lsfd poate rata unele puncte finale dacă limitați procesele cu opțiunea -p.
Formatul coloanei depinde de obiectul asociat cu descriptorul de fișier:
tip FIFO, tip mqueue, surse ptmx și pts
The last characters ([-r][-w]) represent the read and/or write mode of the endpoint.
tip eventfd
UNIX-STREAM
În ceea ce privește ultimele caractere ([-r?][-w?]), a se vedea descrierea SOCK.SHUTDOWN.
EVENTFD.ID <număr>
EVENTPOLL.TFDS <șir>
FD <număr>
FLAGS <șir>
FUID <număr>
INET.LADDR <șir>
INET.RADDR <șir>
INET6.LADDR <șir>
INET6.RADDR <șir>
NOD-I <număr>
INOTIFY.INODES <șir>
INOTIFY.INODES.RAW <șir>
KNAME <șir>
KTHREAD <boolean>
MAJ:MIN <șir>
MAPLEN <număr>
MISCDEV <șir>
MNTID <număr>
MODE <șir>
NAME <șir>
Unele fișiere au formate și surse de informații speciale:
AF_VSOCK
„raddr” nu este afișată pentru soclurile de ascultare.
bpf-map
bpf-prog
eventpoll
eventfd
inotify
misc:tun
NETLINK
PACKET
pidfd
lsfd extrage PID-ȚINTĂ și PIDS.SPAȚIU.NUME-ȚINTĂ din „/proc/”pid„/fdinfo/”fd.
PING
PINGv6
ptmx
lsfd extrage PTMX.TTY-INDEX din „/proc/”pid„/fdinfo/”fd.
RAW
RAWv6
signalfd
TCP, TCPv6
timerfd
UDP, UDPv6
lsfd ascunde raddr= dacă UDP.RADDR_este 0.0.0.0 și _UDP.RPORT este 0.
UDP-LITE, UDPLITEv6
UNIX-STREAM
UNIX
Rețineți că marcajele
(șters) sunt eliminate din această
coloană. Consultați KNAME, DELETED sau
XMODE pentru a afla dacă fișierul poate fi citit din
sistemul de fișiere.
GRUPURI.NETLINK <număr>
NETLINK.PORT-LOCAL <număr>
PROTOCOL.NETLINK <șir>
NLINK <număr>
NUME.SPAȚIU-NUME <șir>
TIP.SPAȚIU-NUME <șir>
PROPRIETAR <șir>
INTERFAȚĂ.PACHET <șir>
PROTOCOL.PACHET. <șir>
PARTIȚIA <șir>
PID <număr>
PIDFD.COMM <șir>
PIDFD.NSPID <șir>
Citat din kernel/fork.c din arborele sursă Linux:
În cazul în care sunt acceptate spațiile de nume pid, atunci această funcție va imprima, de asemenea, pid-ul unui anumit pidfd la care se referă pentru toate spațiile de nume pid descendente începând cu spațiul de nume pid curent al instanței, adică câmpul Pid și prima intrare din câmpul NSpid vor fi identice.
Rețineți că acest lucru diferă de
câmpurile Pid și NSpid din /proc/<pid>/status, unde Pid
și NSpid sunt întotdeauna afișate în raport cu
spațiul de nume pid al instanței procfs.
PIDFD.PID <număr>
PING.ID <`număr`>
POZIȚIA <număr>
RAW.PROTOCOL <număr>
RDEV <șir>
SIGNALFD.MASK <șir>
SIZE <număr>
SOCK.LISTENING <boolean>
SOCK.NETS <număr>
SOCK.PROTONAME <șir>
SOCK.SHUTDOWN <șir>
[-r?]
[-w?]
STARE.SOCLU <șir>
TIP.SOCLU <șir>
SOURCE <șir>
STTYPE <șir>
ADRESA.TCP.LOCALĂ <șir>
TCP.LPORT <număr>
TCP.RADDR <șir>
TCP.RPORT <număr>
TID <număr>
TIMERFD.CLOCKID <șir>
TIMERFD.INTERVAL <număr>
TIMERFD.REMAINING <număr>
PTMX.TTY-INDEX <număr>
INTERFAȚĂ.TUN <șir>
TYPE <șir>
Dacă lsfd primește o eroare atunci când apelează un „syscall” (apel de sistem) pentru a afla despre un descriptor de fișier țintă, lsfd completează această coloană cu ERROR.
ADRESA.UDP.LOCALĂ <șir>
UDP.LPORT <număr>
UDP.RADDR <șir>
UDP.RPORT <număr>
UDPLITE.LADDR <șir>
UDPLITE.LPORT <număr>
UDPLITE.RADDR <șir>
UDPLITE.RPORT <număr>
UID <număr>
UNIX.PATH <șir>
USER <șir>
VSOCK.LADDR <șir>, VSOCK.RADDR <șir>
CID-urile bine cunoscute vor fi decodificate: „*”, „hypervisor”, „local”, sau „host”. Porturile bine cunoscute vor fi decodificate: „*”.
VSOCK.LCID <număr>, VSOCK.RCID <număr>
VSOCK.LPORT <număr>, VSOCK.RPORT <număr>
XMODE <șir>
[-r]
[-w]
[-x]
[-D]
[-Ll]
[-m]
EXEMPLE DE FILTRARE
lsfd are puține opțiuni de filtrare. În cele mai multe cazuri, ceea ce trebuie să știți este opțiunea -Q (sau --filter). Combinată cu opțiunea -o (sau --output), puteți personaliza ieșirea după cum doriți.
Listează fișierele asociate cu procesele PID 1 și PID 2:
# lsfd -Q '(PID == 1) or (PID == 2)'
Face același lucru într-un mod alternativ:
# lsfd -Q '(PID == 1) || (PID == 2)'
Face același lucru într-un mod mai eficient:
# lsfd --pid 1,2
În loc de virgulă se pot folosi spațiile albe:
# lsfd --pid '1 2'
Utilizează pidof(1) pentru a lista fișierele asociate cu „firefox”:
# lsfd --pid "$(pidof firefox)"
Listează primul descriptor de fișier deschis de procesul PID 1:
# lsfd -Q '(PID == 1) and (FD == 1)'
Face același lucru într-un mod alternativ:
# lsfd -Q '(PID == 1) && (FD == 1)'
Listează toate executabilele care rulează:
# lsfd -Q 'ASSOC == "exe"'
Face același lucru într-un mod alternativ:
# lsfd -Q 'ASSOC eq "exe"'
Face același lucru, dar afișează doar numele fișierelor:
# lsfd -o NAME -Q 'ASSOC eq "exe"' | sort -u
Listează fișierele șterse asociate proceselor:
# lsfd -Q 'DELETED'
Listează fișierele care nu sunt obișnuite:
# lsfd -Q 'TYPE != "REG"'
Listează dispozitivele de bloc:
# lsfd -Q 'DEVTYPE == "blk"'
Face același lucru cu coloana TIP:
# lsfd -Q 'TYPE == "BLK"'
Listează fișierele care includ directorul „dconf” în numele lor:
# lsfd -Q 'NAME =~ ".\*/dconf/.*"'
Listează fișierele deschise într-o mașină virtuală QEMU:
# lsfd -Q '(COMMAND =~ ".\*qemu.*") and (FD >= 0)'
Listează fișierele timerfd expirate în termen de 0,5 secunde:
# lsfd -Q '(TIMERFD.remaining < 0.5) and (TIMERFD.remaining > 0.0)'
Listează procesele care comunică prin intermediul soclurilor de flux unix:
# lsfd -Q 'TYPE == "UNIX-STREAM" && UNIX.PATH =~ ".+"' -oUNIX.PATH,PID,COMMAND,FD,SOCK.STATE,ENDPOINTS
Listează procesele care comunică prin intermediul unui soclu de flux unix specificat:
# lsfd -Q 'TYPE == "UNIX-STREAM" && UNIX.PATH == "@/tmp/.X11-unix/X0"' -oUNIX.PATH,PID,COMMAND,FD,SOCK.STATE,ENDPOINTS
EXEMPLE DE CONTORIZARE
Raportează numărul de descriptori de soclu netlink și de descriptori de soclu unix:
# lsfd --summary=only \ -C 'netlink sockets':'(NAME =~ "NETLINK:.*")' \ -C 'unix sockets':'(NAME =~ "UNIX:.*")' VALUE COUNTER 57 netlink sockets 1552 unix sockets
Face același lucru, dar afișează în formatul 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" } ] }
ISTORIC
Comanda lsfd face parte din pachetul util-linux începând cu v2.38.
AUTORI
Masatake YAMATO <yamato@redhat.com>, Karel Zak <kzak@redhat.com>
CONSULTAȚI ȘI
bpftool(8), bps(8), lslocks(8), lsof(8), pidof(1), proc(5), scols-filter(5), socket(2), ss(8), stat(2), vsock(7)
RAPORTAREA ERORILOR
Pentru rapoarte de eroare, folosiți sistemul de urmărire al erorilor https://github.com/util-linux/util-linux/issues.
DISPONIBILITATE
Comanda lsfd face parte din pachetul util-linux care poate fi descărcat de la Linux Kernel Archive https://www.kernel.org/pub/linux/utils/util-linux/.
2025-03-29 | util-linux 2.41 |