Scroll to navigation

LSFD(1) Användarkommandon LSFD(1)

NAMN

lsfd - lista filbeskrivare

SYNOPSIS

lsfd [flagga]

BESKRIVNING

lsfd är tänkt att vara en modern ersättning för lsof(8) på Linux-system. Till skillnad från lsof är lsfd specialiserad på Linux-kärnan; den stöder Linux-specifika funktioner som namnrymder med enklare kod. lsfd är inte en direkt ersättare till lsof; de skiljer sig åt vad gäller kommandoradsgränssnitt och utdataformat.

Standardutdata kan komma att ändras. Så när det är möjligt bör du undvika att använda standardutdata i dina skript. Definiera alltid uttryckligen förväntade kolumner genom att använda --output columns-list i miljöer där en stabil utdata krävs.

lsfd använder Libsmartcols för formatering och filtrering av utdata. Se beskrivningen av flaggan --output för anpassning av utdataformatet och flaggan --filter för filtrering. Använd lsfd --list-columns för att få en lista över alla tillgängliga kolumner.

FLAGGOR

-l, --threads

Lista i trådar nivå.

-J, --json

Använd JSON-utdataformat.

-n, --noheadings

Skriv inte ut rubriker.

-o, --output lista

Ange vilka utdatakolumner som ska skrivas ut. Se avsnittet UTDATAKOLUMNER för information om tillgängliga kolumner.

Standardlistan med kolumner kan utökas om lista anges i formatet +lista (t.ex. lsfd -o +DELETED).

-r, --raw

Använd råformat för utdata.

--notruncate

Avkorta inte text i kolumner.

-p, --pid lista

Samla endast in information om angivna processer. lista är en kommaseparerad lista över PID:er. Se även FILTEREXEMPEL.

-i[4|6], --inet[=4|=6]

Lista endast IPv4-socklar och/eller IPv6-socklar.

-Q, --filter uttryck

Skriv endast ut de filer som uppfyller villkoret i uttryck. Se även scols-filter(5) och FILTEREXEMPEL.

Flaggan -Q med en PID (exempelvis -Q PID==1) och flaggan -p (exempelvis -p 1) kan ge samma resultat, men -p är mycket effektivare eftersom den verkar i ett mycket tidigare skede av bearbetningen än -Q.

-C, --counter etikett:filter_expr

Definiera en anpassad räknare som används i --summary-utdata. lsfd skapar en räknare med namnet etikett. Under insamling av information räknar lsfd filer som matchar filter_expr och lagrar det räknade antalet i räknaren med namnet etikett. lsfd tillämpar filter som definierats med --filter-flaggor före räkningen; filer som utesluts av filtren räknas inte.

Se scols-filter(5) om filter_expr. etikett ska inte innehålla { eller :. Du kan definiera flera räknare genom att ange flaggan flera gånger. Se även RÄKNAREXEMPEL.

--summary[=läge]

Denna flagga styr utmatningen av sammanfattningsrader. Det valfria argumentet läge kan vara only, append eller never. Om argumentet läge utelämnas används only.

Sammanfattningen rapporterar räknare. En räknare består av en etikett och ett heltalsvärde. --counter är en flagga för att definiera en räknare. Om användaren inte definierar någon räknare använder lsfd definitionerna av fördefinierade inbyggda räknare (standardräknare) för att skapa sammanfattningen.

FÖRSIKTIGHET: Om du använder --summary och --json kan utdata bli trasig. Endast kombinationen --summary=only och --json är giltig.

--debug-filter

Dumpa den interna datastrukturen för filtret och avsluta. Detta är endast användbart för lsfd-utvecklare.

--dump-counters

Dumpa definitionen av räknare som används i --summary-utdata.

--hyperlink[=när]

Skriv ut sökvägar som hyperlänkar i terminalen. Det valfria argumentet när kan vara always, never eller auto. Om argumentet utelämnas används auto, vilket innebär att hyperlänkar endast används när utdata går till en terminal.

-H, --list-columns

Lista kolumnerna som kan anges med flaggan --output. Kan användas med --json eller --raw för att få listan i maskinläsbart format.

-h, --help

Visa hjälptext och avsluta.

-V, --version

Visa version och avsluta.

MILJÖ

LIBSMARTCOLS_DEBUG=all

aktiverar libsmartcols felsökningsutdata.

LIBSMARTCOLS_DEBUG_PADDING=on

använda synliga utfyllnadstecken.

UTDATAKOLUMNER

Varje kolumn har en typ. Typerna omges av < och >.

FÖRSIKTIGHET: Namnen på och typerna av kolumner är inte stabila ännu. De kan komma att ändras i framtida versioner.

AINODECLASS <sträng>

Klass av anonym inode.

ASSOC <sträng>

Samband mellan fil och process.

BLKDRV <sträng>

Namn på drivrutin för blockenhet löst av /proc/devices.

BPF-MAP.ID <nummer>

ID för Bpf-karta.

BPF-MAP.TYPE <sträng>

Avkodat namn på bpf-karttyp.

BPF-MAP.TYPE.RAW <nummer>

Bpf karttyp (rå).

BPF.NAME <sträng>

Bpf-objektets namn.

BPF-PROG.ID <nummer>

Bpf program ID.

BPF-PROG.TAG <sträng>

Bpf-program TAG.

BPF-PROG.TYPE <sträng>

Avkodat namn på bpf programtyp.

BPF-PROG.TYPE.RAW <nummer>

Bpf programtyp (rå).

CHRDRV <sträng>

Enhetens drivrutinsnamn för tecken som lösts av /proc/devices.

COMMAND <string>

Kommando för den process som öppnar filen.

DELETED <boolean>

Nåbarhet från filsystemet.

DEV <sträng>

ID för den enhet som innehåller filen.

DEVTYPE <sträng>

Enhetstyp (blk, char eller nodev).

ENDPOINTS <sträng>

IPC-slutpunkter information som kommuniceras med fd.

lsfd samlar in slutpunkter inom de processer som lsfd skannar; lsfd kan missa vissa slutpunkter om du begränsar processerna med flaggan -p.

Kolumnens format beror på det objekt som är associerat med fd:

FIFO-typ, mqueue-typ, ptmx- och pts-källor

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

De sista tecknen ([-r][-w]) representerar läs- och/eller skrivläget för ändpunkten.

eventfd-typ

PID,KOMMANDO,ASSOC

UNIX

Samma som UNIX-STREAM.

I en container kan det hända att lsfd inte fyller i kolumnen ENDPOINTS. lsfd använder sock_diag(7) för att samla in information om UNIX-ändpunkter. SELinux kan begränsa användningen av sock_diag i en container. Du kan ta bort begränsningen genom att sätta det booleska värdet virt_sandbox_use_netlink till 1. Se container_selinux(8) för mer information.

UNIX-STREAM

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

Angående de sista tecknen ([-r?][-w?]), se beskrivningen av SOCK.SHUTDOWN.

EVENTFD.ID <nummer>

Eventfd ID.

EVENTPOLL.TFDS <sträng>

Filbeskrivare som är mål för filen eventpoll.

FD <nummer>

Filbeskrivare för filen.

FLAGS <string>

Flaggor som anges när filen öppnas.

FUID <nummer>

Användar-ID-nummer för filens ägare.

INET.LADDR <sträng>

Lokal IP-adress.

INET.RADDR <sträng>

Fjärr-IP-adress.

INET6.LADDR <sträng>

Lokal IP6-adress.

INET6.RADDR <sträng>

Fjärr-IP6-adress.

INODE <nummer>

Inode-nummer.

INOTIFY.INODES <sträng>

Tillagad version av INOTIFY.INODES.RAW. Elementets format är inod-nummer,källa-till-inod.

INOTIFY.INODES.RAW <sträng>

Lista över inoder för övervakning. Elementets format är inod-nummer,huvudenhet:bienhet.

KNAME <sträng>

Obearbetat filnamn som extraherats från /proc/pid/fd/fd eller /proc/pid/map_files/region.

KTHREAD <boolean>

Om processen är en kärntråd eller inte.

MAJ:MIN <sträng>

Enhetens ID för special, eller ID för enheten som innehåller filen.

MAPLEN <nummer>

Längd på filmappningen (i sidor).

MISCDEV <sträng>

Enhetsnamn med Misc-tecken som lösts av /proc/misc.

MNTID <nummer>

Mount ID.

MODE <sträng>

Åtkomstläge (rwx).

NAME <string>

Tillagad version av KNAME. Den är i stort sett likadan som KNAME.

Vissa filer har speciella format och informationskällor:

AF_VSOCK

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

raddr visas inte för lyssnande uttag.

bpf-karta

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

inotifiera

inodes=INOTIFY.INODES

misc:tun

iface=TUN.IFACE[ devnetns=TUN.DEVNETNS][ socknetns=SOCK.NETNS]

NÄTLÄNK

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 extraherar TARGET-PID och TARGET-NSPIDS från /proc/pid/fdinfo/fd.

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 hämtar PTMX.TTY-INDEX från /proc/pid/fdinfo/fd.

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 döljer raddr= om UDP.RADDR är 0.0.0.0 och UDP.RPORT är 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

Observera att markörerna (deleted) tas bort från den här kolumnen. Se KNAME, DELETED eller XMODE om du vill veta om filen är läsbar från filsystemet.

NETLINK.GROUPS <antal>

Netlink multicast-grupper.

NETLINK.LPORT <nummer>

Netlinks lokala port-ID.

NETLINK.PROTOCOL <sträng>

Netlink-protokoll.

NLINK <nummer>

Antal länkar.

NS.NAME <sträng>

Namn (NS.TYPE:[INODE]) på namnrymden som anges med filen.

NS.TYPE <sträng>

Typ av namnrymd som anges med filen. Typen är mnt, cgroup, uts, ipc, user, pid, net, time eller unknown.

OWNER <string>

Ägare av filen.

PACKET.IFACE <sträng>

Gränssnittsnamn som är associerat med paketuttaget.

PACKET.PROTOCOL <sträng>

Namnet på L2-protokollet som är associerat med paketuttaget (avkodat).

PACKET.PROTOCOL.RAW <number>

Numret för L2-protokollet som är associerat med paketuttaget (rått).

PARTITION <sträng>

Blockenhetsnamn löst av /proc/partition.

PID <nummer>

PID för den process som öppnar filen.

PIDFD.COMM <sträng>

Kommando för den process som pidfd riktar in sig på.

PIDFD.NSPID <sträng>

Värdet på fältet NSpid i /proc/pid/fdinfo/fd i pidfd.

Citerat från kernel/fork.c i Linux källträd:

Om pid-namnrymder stöds kommer denna funktion också att skriva ut pid för en viss pidfd som refererar till för alla nedåtgående pid-namnrymder som börjar från den aktuella pid-namnrymden i instansen, dvs. fältet Pid och den första posten i fältet NSpid kommer att vara identiska.

Observera att detta skiljer sig från fälten Pid och NSpid i /proc/<pid>/status där Pid och NSpid alltid visas i förhållande till procfs-instansens pid-namnområde.

PIDFD.PID <nummer>

PID för den process som pidfd riktar in sig på.

PING.ID <`nummer`>

ICMP-id för ekobegäran som används på PING-uttaget.

POS <nummer>

Filens position.

RAW.PROTOCOL <string>

Protokollnamnet för det råa uttaget (avkodat).


Note

Datatypen för denna kolumn var <number> från v2.39 till v2.41.

RAW.PROTOCOL.RAW <number>

Protokollnumret för det råa uttaget (rått).

RDEV <sträng>

Enhetens ID (om speciell fil).

SIGNALFD.MASK <sträng>

Maskerade signaler.

STRL <nummer>

Filstorlek.

SOCK.LISTENING <boolean>

Lyssnande uttag.

SOCK.NETS <nummer>

Inod som identifierar nätverksnamnrymden där uttaget finns.

SOCK.PROTONAME <sträng>

Protokollets namn.

SOCK.SHUTDOWN <sträng>

Avstängningsstatus för uttag.

[-r?]

Om det första tecknet är r är mottagningen tillåten. Om det är - är mottagningarna otillåtna. Om det är ? är tillståndet okänt.

[-w?]

Om det andra tecknet är w är överföringen tillåten. Om det är - är sändningarna otillåtna. Om det är ? är tillståndet okänt.

SOCK.STATE <sträng>

Uttagstillstånd.

SOCK.TYPE <sträng>

Typ av uttag. Här betyder typ den andra parametern i systemanropet för uttag:

•stream

•dgram

•raw

•rdm

•seqpacket

•dccp

•packet

KÄLLA <sträng>

Filsystem, partition eller enhet som innehåller filen. För den association som har ERROR som värde för kolumnen TYPE fyller lsfd denna kolumn med syscall:_errno_.

STTYPE <sträng>

Obearbetade filtyper som returneras från stat(2): BLK, CHR, DIR, FIFO, LINK, REG, SOCK eller UNKN.

TCP.LADDR <sträng>

Lokal L3-adress (INET.LADDR eller INET6.LADDR) och lokal TCP-port.

TCP.LPORT <nummer>

Lokal TCP-port.

TCP.RADDR <sträng>

Fjärr-L3-adress (INET.RADDR eller INET6.RADDR) och fjärr-TCP-port.

TCP.RPORT <nummer>

Fjärr-TCP-port.

TID <nummer>

Thread ID för den process som öppnar filen.

TIMERFD.CLOCKID <sträng>

Clockid.

TIMERFD.INTERVAL <nummer> TIMERFD.INTERVAL <nummer>

Intervall.

TIMERFD.REMAINING <nummer>

Återstående tid.

PTMX.TTY-INDEX <nummer>

TTY-index för motparten.

TUN.DEVNETNS <number>

Inod som identifierar nätverksnamnrymden där enheten finns.

TUN.IFACE <sträng>

Nätverksgränssnitt bakom tun-enheten.

TYP <sträng>

Tillagad version av STTYPE. Det är samma sak som STTYPE med undantag. För SOCK, skriv ut värdet för SOCK.PROTONAME. För UNKN, skriv ut värdet för AINODECLASS om SOURCE är anon_inodefs.

Om lsfd får ett fel när ett syscall anropas för att få information om en målfilsbeskrivare, fyller lsfd denna kolumn med ERROR.

UDP.LADDR <sträng>

Lokal IP-adress och lokal UDP-port.

UDP.LPORT <nummer>

Lokal UDP-port.

UDP.RADDR <sträng>

Fjärranslutningens IP-adress och UDP-port.

UDP.RPORT <antal>

UDP-port för fjärrkontroll.

UDPLITE.LADDR <sträng>

Lokal IP-adress och lokal UDPLite-port.

UDPLITE.LPORT <nummer>

Lokal UDP-port.

UDPLITE.RADDR <sträng>

Fjärranslutningens IP-adress och UDPLite-port.

UDPLITE.RPORT <nummer>

UDP-port för fjärrkontroll.

UID <nummer>

Användar-ID-nummer.

UNIX.IPEER < number >

Inodnumret för UNIX-domänuttagets motpart.

Om lsfd körs i en container kan det hända att kolumnen UNIX.IPEER inte fylls i. Se beskrivningen av UNIX i kolumnen ENDPOINTS för mer information.

UNIX.PATH <sträng>

Filsystemets sökväg för UNIX-domänens uttag.

USER <string>

Användare av processen.

VSOCK.LADDR <sträng>, VSOCK.RADDR <sträng>

Lokal VSOCK-adress. Elementets format är VSOCK.LCID:VSOCK.LPORT.

Välkända CID:n kommer att avkodas: “*”, “hypervisor”, “local” eller “host”. Välkända portar kommer att avkodas: “*”.

VSOCK.LCID <nummer>, VSOCK.RCID <nummer>

Identifierare för lokala och avlägsna VSOCK-kontexter.

VSOCK.LPORT <nummer>, VSOCK.RPORT <nummer>

Lokala VSOCK-portar och fjärrportar.

XMODE <sträng>

Utökad version av MODE. Denna kolumn kan växa; nya bokstäver kan läggas till XMODE när lsfd stöder ett nytt tillstånd för filbeskrivningar och/eller minnesmappningar.

[-r]

öppnas av mappad för läsning. Detta är också i MODE.

[-w]

öppnas av mappad för skrivning. Detta är också i MODE.

[-x]

mappad för att exekvera koden. Detta är också i MODE.

[-D]

raderad från filsystemet. Se även DELETED.

[-Ll]

låst eller leasad. l representerar en läsning, ett delat lås eller ett läsleasingavtal. L representerar en skrivning eller ett exklusivt lås eller ett skrivleasingavtal. Om en filbeskrivare har både läs-/delade och skriv-/exklusiva lås eller leasingavtal används L som flagga.

[-m]

Multiplexerad. Denna bitflagga sätts om filbeskrivaren övervakas av en eventpoll-fil eller klassiska systemanrop för multiplexering (select(2), pselect(2), poll(2) och ppoll(2)). Om ett sådant klassiskt systemanrop avbryts kan lsfd misslyckas med att markera m på filbeskrivarna som anropet övervakar. Se restart_syscall(2).

FILTEREXEMPEL

lsfd har några flaggor för filtrering. I de flesta fall bör du känna till flaggan -Q (eller --filter). Kombinerat med -o (eller --output) kan du anpassa utdata som du vill.

Lista filer associerade med PID 1 och PID 2-processer:

# lsfd -Q '(PID == 1) or (PID == 2)'

Gör samma sak på ett alternativt sätt:

# lsfd -Q '(PID == 1) || (PID == 2)'

Gör samma sak på ett mer effektivt sätt:

# lsfd --pid 1,2

Blanksteg kan användas i stället för kommatecken:

# lsfd --pid '1 2'

Använd pidof(1) för att lista de filer som är associerade med "firefox":

# lsfd --pid "$(pidof firefox)"

Lista den 1:a filbeskrivaren som öppnades av PID 1-processen:

# lsfd -Q '(PID == 1) and (FD == 1)'

Gör samma sak på ett alternativt sätt:

# lsfd -Q '(PID == 1) && (FD == 1)'

Lista alla körbara program som körs:

# lsfd -Q 'ASSOC == "exe"'

Gör samma sak på ett alternativt sätt:

# lsfd -Q 'ASSOC eq "exe"'

Gör samma sak men skriv bara ut filnamn:

# lsfd -o NAME -Q 'ASSOC eq "exe"' | sort -u

Lista borttagna filer som är associerade med processer:

# lsfd -Q 'DELETED'

Lista icke-reguljära filer:

# lsfd -Q 'TYPE != "REG"'

Lista blockenheter:

# lsfd -Q 'DEVTYPE == "blk"'

Gör samma sak med kolumnen TYPE:

# lsfd -Q 'TYPE == "BLK"'

Lista filer som innehåller "dconf"-katalogen i sina namn:

# lsfd -Q 'NAME =~ ".\*/dconf/.*"'

Lista filer som öppnats i en virtuell QEMU-maskin:

# lsfd -Q '(COMMAND =~ ".\*qemu.*") and (FD >= 0)'

Lista timerfd-filer som förföll inom 0,5 sekunder:

# lsfd -Q '(TIMERFD.remaining < 0.5) and (TIMERFD.remaining > 0.0)'

Lista processer som kommunicerar via unix stream-sockets:

# lsfd -Q 'TYPE == "UNIX-STREAM" && UNIX.PATH =~ ".+"' -oUNIX.PATH,PID,COMMAND,FD,SOCK.STATE,ENDPOINTS

Listar processer som kommunicerar via en angiven unix stream-socket:

# lsfd -Q 'TYPE == "UNIX-STREAM" && UNIX.PATH == "@/tmp/.X11-unix/X0"' -oUNIX.PATH,PID,COMMAND,FD,SOCK.STATE,ENDPOINTS

RÄKNAREXEMPEL

Rapportera antalet netlink-uttagsdeskriptorer och unix-uttagsdeskriptorer:

# lsfd --summary=only \

-C 'netlink sockets':'(NAME =~ "NETLINK:.*")' \
-C 'unix sockets':'(NAME =~ "UNIX:.*")' VALUE COUNTER
57 netlink sockets
1552 unix sockets

Gör samma sak men skriv ut i JSON-format:

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

HISTORIK

Kommandot lsfd är en del av paketet util-linux sedan v2.38.

UPPHOVSPERSONER

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

SE ÄVEN

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

FELRAPPORTERING

För felrapporter, använd felhanteraren <https://github.com/util-linux/util-linux/issues>.

TILLGÄNGLIGHET

Kommandot lsfd ingår i paketet util-linux som kan hämtas från Linux Kernel Archive <https://www.kernel.org/pub/linux/utils/util-linux/>.

2026-09-25 util-linux 2.42.4