LSFD(1) Comenzi utilizator LSFD(1)

lsfd - listează descriptorii de fișiere

lsfd [opțiune]

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.

-l, --threads

Afișează lista la nivel de fire de excuție.

-J, --json

Utilizează formatul de ieșire JSON.

-n, --noheadings

Nu afișează linia de titluri.

-o, --output listă

Specifică ce coloane de ieșire se vor afișa. Consultați secțiunea COLOANE DE IEȘIRE pentru detalii despre coloanele disponibile.

Lista implicită de coloane poate fi extinsă dacă lista este specificată în formatul +listă (de exemplu, lsfd -o +DELETED).

-r, --raw

Utilizează formatul de ieșire brut.

--notruncate

Nu trunchiază textul din coloane.

-p, --pid pids

Colectează informații numai pentru procesele specificate. pids este o listă de pid-uri. Ca separatori se poate folosi o virgulă sau spații albe. Puteți utiliza această opțiune împreună cu pidof(1). A se vedea EXEMPLE DE FILTRARE.

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]

Enumeră numai socluri IPv4 și/sau socluri IPv6.

-Q, --filter expresia

Afișează numai fișierele care corespund condiției reprezentate de expresia. A se vedea, de asemenea, scols-filter(5) și EXEMPLE DE FILTRARE.

-C, --counter eticheta:expresia_filtru

Definește un contor personalizat utilizat în ieșirea --summary. lsfd creează un contor numit eticheta. În timpul colectării informațiilor, lsfd numără fișierele care corespund expresia_filtru și stochează numărul numărat în contorul numit eticheta. lsfd aplică filtrele definite cu opțiunile --filter înainte de numărare; fișierele excluse de filtre nu sunt numărate.

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]

Această opțiune controlează ieșirea liniilor de rezumat. Argumentul opțional când poate fi only, append sau never. În cazul în care argumentul când este omis, valoarea implicită este only.

Î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

Descarcă structura internă de date pentru filtru și iese. Acest lucru este util numai pentru dezvoltatorii lsfd.

--dump-counters

Descarcă definiția contoarelor utilizate în --summary.

--hyperlink[=mod]

Imprimă rutele ca hiperlegături de terminal. Argumentul mod poate fi definit la „always” (întotdeauna), „never” (niciodată) sau „auto”. Argumentul opțional când poate fi definit la „auto”, „never” sau „always”. Dacă argumentul când este omis, se va utiliza în mod implicit „auto”. Parametrul „auto” înseamnă că hiperlegăturile vor fi utilizate numai dacă ieșirea este pe un terminal.

-H, --list-columns

Listează coloanele disponibile pe care le puteți specifica la opțiunea --output.

-h, --help

Afișează acest mesaj de ajutor și iese.

-V, --version

Afișează versiunea și iese.

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>

Clasa nodului-i anonim.

ASSOC <șir>

Asocierea dintre fișier și proces.

BLKDRV <șir>

Numele controlorului de dispozitiv de bloc rezolvat de „/proc/devices”.

BPF-MAP.ID <număr>

Identificatorul hărții bpf.

BPF-MAP.TYPE <șir>

Numele decodificat al tipului de hartă bpf.

BPF-MAP.TYPE.RAW <număr>

Tipul de hartă bpf (brut).

BPF.NAME <șir>

Numele obiectului bpf.

BPF-PROG.ID <număr>

Identificatorul programului bpf.

BPF-PROG.TAG <șir>

Eticheta (TAG) programului bpf.

BPF-PROG.TYPE <șir>

Numele decodificat al tipului de program bpf.

BPF-PROG.TYPE.RAW <număr>

Tipul de program bpf (brut).

CHRDRV <șir>

Numele controlorului de dispozitiv de caracter rezolvat de „/proc/devices”.

COMMAND <șir>

Comanda procesului de deschidere a fișierului.

DELETED <boolean>

Accesibilitatea sistemului de fișiere.

DEV <șir>

ID-ul dispozitivului care conține fișierul.

DEVTYPE <șir>

Tipul dispozitivului („blk”, „char”, sau „nodev”).

ENDPOINTS <string>

Informații despre punctele finale IPC comunicate cu descriptorul de fișier (fd).

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

PID,COMANDA,ASSOC[-r][-w]

The last characters ([-r][-w]) represent the read and/or write mode of the endpoint.

tip eventfd

PID,COMANDA,ASSOC

UNIX-STREAM

PID,COMANDA,ASSOC[-r?][-w?]

În ceea ce privește ultimele caractere ([-r?][-w?]), a se vedea descrierea SOCK.SHUTDOWN.

EVENTFD.ID <număr>

Identificatorul eventfd.

EVENTPOLL.TFDS <șir>

Descriptori de fișiere vizate de fișierul eventpoll.

FD <număr>

Descriptorul de fișier al fișierului.

FLAGS <șir>

Fanioane specificate la deschiderea fișierului.

FUID <număr>

Numărul ID-ului de utilizator al proprietarului fișierului.

INET.LADDR <șir>

Adresa IP locală.

INET.RADDR <șir>

Adresa IP de la distanță.

INET6.LADDR <șir>

Adresa IP6 locală.

INET6.RADDR <șir>

Adresa IP6 de la distanță.

NOD-I <număr>

Numărul nodului-i.

INOTIFY.INODES <șir>

Versiunea procesată a INOTIFY.INODES.RAW. Formatul elementului este număr-nod-i,sursa-de-nod-i.

INOTIFY.INODES.RAW <șir>

Lista de noduri-i de monitorizare. Formatul elementului este număr-nod-i,dispozitiv-major:dispozitiv-minor`.

KNAME <șir>

Numele fișierului brut extras din /proc/pid/fd/descriptor-fișier sau /proc/`pid/map_files/`regiune.

KTHREAD <boolean>

Dacă procesul este sau nu un fir de execuție al nucleului.

MAJ:MIN <șir>

ID-ul dispozitivului special sau ID-ul dispozitivului care conține fișierul.

MAPLEN <număr>

Lungimea cartografierii fișierului (în pagini).

MISCDEV <șir>

Diverse nume de dispozitiv de caractere rezolvate de „/proc/misc”.

MNTID <număr>

Identificatorul montării.

MODE <șir>

Modul de acces (rwx).

NAME <șir>

Versiunea procesată a lui KNAME. Este în mare parte aceeași cu KNAME.

Unele fișiere au formate și surse de informații speciale:

AF_VSOCK

state=SOCK.STATE type=SOCK.TYPE laddr=VSOCK.LADDR[ raddr=VSOCK.RADDR]

„raddr” nu este afișată pentru soclurile de ascultare.

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

NETLINK

protocol=PROTOCOL.NETLINK[ lport=PORT.NETLINK-LOCAL[ group=GRUPURI.NETLINK]]

PACKET

type=TIP.SOCLU[ protocol=PROTOCOL.PACHET][ iface=INTERFAȚĂ.PACHET]

pidfd

pid=PID-ȚINTĂ comm=COMANDA-ȚINTĂ nspid=PIDS.SPAȚIU.NUME-ȚINTĂ

lsfd extrage PID-ȚINTĂ și PIDS.SPAȚIU.NUME-ȚINTĂ din „/proc/”pid„/fdinfo/”fd.

PING

state=STARE.SOCLU[ id=ID.PING][ laddr=ADRESA.INET.LOCALĂ [ raddr=ADRESA.INET.LA-DISTANȚĂ]]

PINGv6

state=STARE.SOCLU[ id=ID.PING][ laddr=ADRESA.INET6.LOCALĂ [ raddr=ADRESA.INET6.LA-DISTANȚĂ]]

ptmx

tty-index=PTMX.TTY-INDEX

lsfd extrage PTMX.TTY-INDEX din „/proc/”pid„/fdinfo/”fd.

RAW

state=STARE.SOCLU[ protocol=PROTOCOL.BRUT [ laddr=ADRESA.INET.LOCALĂ [ raddr=ADRESA.INET.LA-DISTANȚĂ]]]

RAWv6

state=STARE.SOCLU[ protocol=PROTOCOL.BRUT [ laddr=ADRESA.INET6.LOCALĂ [ raddr=ADRESA.INET6.LA-DISTANȚĂ]]]

signalfd

mask=SIGNALFD.MASK

TCP, TCPv6

state=STARE.SOCLU[ laddr=ADRESA.TCP.LOCALĂ [ raddr=ADRESA.TCP.LA-DISTANȚĂ]]

timerfd

clockid=TIMERFD.CLOCKID[ remaining=TIMERFD.REMAINING [ interval=TIMERFD.INTERVAL]]

UDP, UDPv6

state=STARE.SOCLU[ laddr=ADRESA.UDP.LOCALĂ [ raddr=ADRESA.UDP.LA-DISTANȚĂ]]

lsfd ascunde raddr= dacă UDP.RADDR_este 0.0.0.0 și _UDP.RPORT este 0.

UDP-LITE, UDPLITEv6

state=STARE.SOCLU[ laddr=ADRESA.UDPLITE.LOCALĂ [ raddr=ADRESA.UDPLITE.LA-DISTANȚĂ]]

UNIX-STREAM

state=STARE.SOCLU[ path=RUTA.UNIX]

UNIX

state=STARE.SOCLU[ path=RUTA.UNIX] type=TIP.SOCLU

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>

Grupuri multicast Netlink.

NETLINK.PORT-LOCAL <număr>

Identificatorul portului local Netlink.

PROTOCOL.NETLINK <șir>

Protocolul Netlink.

NLINK <număr>

Numărul de legături.

NUME.SPAȚIU-NUME <șir>

Numele (TIP.SPAȚIU-NUME:[_NOD-I]) spațiului de nume specificat cu fișierul.

TIP.SPAȚIU-NUME <șir>

Tipul spațiului de nume specificat cu fișierul. Tipul este „mnt”, „cgroup”, „uts”, „ipc”, „user”, „pid”, „net”, „time” sau „unknown”.

PROPRIETAR <șir>

Proprietarul fișierului.

INTERFAȚĂ.PACHET <șir>

Numele interfeței asociate cu soclul de pachete.

PROTOCOL.PACHET. <șir>

Protocolul L3 asociat cu soclul de pachete.

PARTIȚIA <șir>

Numele dispozitivului de bloc rezolvat de /proc/partition.

PID <număr>

PID-ul procesului care deschide fișierul.

PIDFD.COMM <șir>

Comanda procesului vizat de pidfd.

PIDFD.NSPID <șir>

Valoarea câmpului NSpid din /proc/pid/fdinfo/`descriptor-fișier al pidfd.

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>

PID-ul procesului vizat de pidfd.

PING.ID <`număr`>

ID-ul solicitării de ecou ICMP utilizat pe soclul PING.

POZIȚIA <număr>

Poziția fișierului.

RAW.PROTOCOL <număr>

Numărul de protocol al soclului brut.

RDEV <șir>

ID-ul dispozitivului (dacă este vorba de un fișier special).

SIGNALFD.MASK <șir>

Semnalele mascate.

SIZE <număr>

Dimensiunea fișierului.

SOCK.LISTENING <boolean>

Soclu de ascultare.

SOCK.NETS <număr>

Nodul-i care identifică spațiul de nume al rețelei din care face parte soclul.

SOCK.PROTONAME <șir>

Numele protocolului.

SOCK.SHUTDOWN <șir>

Starea de închidere a soclului.

[-r?]

Dacă primul caracter este r, recepțiile sunt permise. Dacă este -, recepțiile nu sunt permise. Dacă este ?, starea este necunoscută.

[-w?]

Dacă al doilea caracter este w, transmisiunile sunt permise. Dacă este -, transmisiunile sunt interzise. Dacă este ?, starea este necunoscută.

STARE.SOCLU <șir>

Starea soclului.

TIP.SOCLU <șir>

Tipul de soclu. Aici tipul înseamnă al doilea parametru al apelului de sistem pentru soclu:
•stream
•dgram
•raw
•rdm
•seqpacket
•dccp
•packet

SOURCE <șir>

Sistemul de fișiere, partiția sau dispozitivul care conține fișierul. Pentru asociația care are ERROR ca valoare pentru coloana TYPE, lsfd completează această coloană cu syscall:_errno_.

STTYPE <șir>

Tipuri de fișiere brute returnate de stat(2): BLK, CHR, DIR, FIFO, LINK, REG, SOCK sau UNKN.

ADRESA.TCP.LOCALĂ <șir>

Adresa L3 locală (ADRESA.INET.LOCALĂ sau ADRESA.INET6.LOCALĂ) și portul TCP local.

TCP.LPORT <număr>

Portul TCP local.

TCP.RADDR <șir>

Adresa L3 la distanță (ADRESA.INET.LA-DISTANȚĂ sau ADRESA.INET6.LA-DISTANȚĂ) și portul TCP la distanță.

TCP.RPORT <număr>

Portul TCP de la distanță.

TID <număr>

ID-ul firului de execuție al procesului care deschide fișierul.

TIMERFD.CLOCKID <șir>

Identificatorul ceasului (clockid).

TIMERFD.INTERVAL <număr>

Interval.

TIMERFD.REMAINING <număr>

Timpul rămas.

PTMX.TTY-INDEX <număr>

Indicele TTY al omologului.

INTERFAȚĂ.TUN <șir>

Interfața de rețea din spatele dispozitivului tun.

TYPE <șir>

Versiunea procesată a STTYPE. Este aceeași cu STTYPE cu câteva excepții. Pentru SOCK, se afișează valoarea pentru SOCK.PROTONAME. Pentru UNKN, se afișează valoarea pentru AINODECLASS dacă SOURCE este „anon_inodefs”.

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>

Adresa IP locală și portul UDP local.

UDP.LPORT <număr>

Portul UDP local.

UDP.RADDR <șir>

Adresa IP de la distanță și portul UDP de la distanță.

UDP.RPORT <număr>

Portul UDP de la distanță.

UDPLITE.LADDR <șir>

Adresa IP locală și portul UDPLite local.

UDPLITE.LPORT <număr>

Portul UDP local.

UDPLITE.RADDR <șir>

Adresa IP de la distanță și portul UDPLite de la distanță.

UDPLITE.RPORT <număr>

Portul UDP de la distanță.

UID <număr>

Numărul de identificare al utilizatorului.

UNIX.PATH <șir>

Numele rutei sistemului de fișiere pentru soclul de domeniu UNIX.

USER <șir>

Utilizatorul procesului.

VSOCK.LADDR <șir>, VSOCK.RADDR <șir>

Adresa locală VSOCK. Formatul elementului este VSOCK.LCID:VSOCK.LPORT.

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>

Identificatori de context VSOCK locali și de la distanță.

VSOCK.LPORT <număr>, VSOCK.RPORT <număr>

Porturi VSOCK locale și de la distanță.

XMODE <șir>

Versiunea extinsă a MODE. Această coloană poate crește; noi litere pot fi adăugate la XMODE atunci când lsfd acceptă o nouă stare a descriptorilor de fișiere și/sau a atribuirilor de memorie.

[-r]

deschis de atribuire pentru lectură. Acesta este, de asemenea, în MODE.

[-w]

deschis de atribuire pentru scriere. Acesta este, de asemenea, în MODE.

[-x]

atribuit pentru executarea codului. Acesta este, de asemenea, în MODE.

[-D]

șters din sistemul de fișiere. A se vedea și DELETED.

[-Ll]

blocat sau concesionat. l reprezintă o citire, un blocaj partajat sau o concesiune de citire. L reprezintă o scriere, un blocaj exclusiv sau o concesiune de scriere. În cazul în care un descriptor de fișier are atât blocaje sau concesiuni de citire/partajate, cât și de scriere/exclusive, L este utilizat ca indicator.

[-m]

Multiplexat. În cazul în care descriptorul de fișier este vizat de un fișier eventpoll sau de apelurile de sistem clasice pentru multiplexare (select, pselect, poll și ppoll), acest fanion de bit este activat. Rețineți că, în cazul în care o invocare a apelurilor de sistem clasice este întreruptă, lsfd poate să nu reușească să marcheze m pe descriptorii de fișiere monitorizați de invocarea respectivă. A se vedea restart_syscall(2).

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

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"
      }
   ]
}

Comanda lsfd face parte din pachetul util-linux începând cu v2.38.

Masatake YAMATO <yamato@redhat.com>, Karel Zak <kzak@redhat.com>

bpftool(8), bps(8), lslocks(8), lsof(8), pidof(1), proc(5), scols-filter(5), socket(2), ss(8), stat(2), vsock(7)

Pentru rapoarte de eroare, folosiți sistemul de urmărire al erorilor https://github.com/util-linux/util-linux/issues.

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