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 OUTPUT COLUMNS 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 list
    Collect information only for the specified processes. The list is a comma-separated list of PIDs. See also FILTER EXAMPLES.

-i[4|6], --inet[=4|=6]
    Lista endast IPv4-socklar och/eller IPv6-socklar.

-Q, --filter expression
    Print only the files matching the condition represented by the expression. See also scols-filter(5) and FILTER EXAMPLES.

    The -Q option with a PID (for example: -Q PID==1) and the -p option (for example: -p 1) can be used to achieve the same result, but using the -p option is much more efficient because it works at a much earlier stage of processing than the -Q option.

-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.

    See scols-filter(5) about filter_expr. label should not include { nor :. You can define multiple counters by specifying this option multiple times. See also COUNTER EXAMPLES.

--summary[=mode]
    This option controls summary lines output. The optional argument mode can be only, append, or never. If the mode argument is omitted, it defaults to 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[=when]
    Print paths as terminal hyperlinks. The optional when argument can be always, never, or auto. If the argument is omitted, it defaults to auto, which means that hyperlinks will only be used when the output goes to a terminal.

-H, --list-columns
    List the columns that can be specified with the --output option. Can be used with --json or --raw to get the list in a machine-readable 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.

UTMATNINGSKOLUMNER

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.

KOMMANDO <sträng>
    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
        Same as UNIX-STREAM.

        In a container, lsfd may not fill ENDPOINTS column. lsfd uses sock_diag(7) to collect information about UNIX endpoints. SELinux may limit the use sock_diag in a container. You can remove the limit by setting 1 to virt_sandbox_use_netlink bool. See container_selinux(8) for more details.

    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.

FLAGGOR <sträng>
    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).

NAMN <sträng>
    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.

ÄGARE <sträng>
    Ägare av filen.

PACKET.IFACE <sträng>
    Gränssnittsnamn som är associerat med paketuttaget.

PACKET.PROTOCOL <sträng>
    L2 protocol name associated with the packet socket (decoded).

PACKET.PROTOCOL.RAW <number>
    L2 protocol number associated with the packet socket (raw).

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>
    Protocol name of the raw socket (decoded).

        Note

        The data type of this column was <number> from v2.39 to v2.41.

RAW.PROTOCOL.RAW <number>
    Protocol number of the raw socket (raw).

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>
    Inode identifying network namespace where the socket belongs.

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>
    Inode identifying network namespace where the device belongs.

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 >
    Inode number for the peer of the UNIX domain socket.

    If lsfd runs in a container, it may not fill UNIX.IPEER column. See the description of UNIX in ENDPOINTS column for more details.

UNIX.PATH <sträng>
    Filsystemets sökväg för UNIX-domänens uttag.

ANVÄNDARE <sträng>
    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]
        Multiplexed. If the file descriptor is targeted by a eventpoll file or classical system calls for multiplexing (select(2), pselect(2), poll(2), and ppoll(2)), this bit flag is set. Note that if an invocation of the classical system calls is interrupted, lsfd may fail to mark m on the file descriptors monitored by the invocation. See restart_syscall(2).

EXEMPEL PÅ FILTER

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) eller (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) och (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 är lika med "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.*") och (FD >= 0)'

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

    # lsfd -Q '(TIMERFD.remaining < 0,5) och (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ÄKNEEXEMPEL

Rapportera antalet netlink-uttagsdeskriptorer och unix-uttagsdeskriptorer:

    # lsfd --summary=only \
            -C 'netlink sockets':'(NAME =~ "NETLINK:.*")' \
            -C 'unix sockets':'(NAME =~ "UNIX:.*")'
    VÄRDE RÄKNING
       57 netlink-uttag
     1552 unix-uttag

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": [
          {
             "värde": 15,
             "räknare": "netlink sockets"
          },{
             "värde": 798,
             "räknare": "unix sockets"
          }
       ]
    }

HISTORIK

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

UPPHOVSPERSONER

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

TILLGÄNGLIGHET

Kommandot lsfd ingår i paketet util-linux som kan hämtas från