Slik bruker du Linux lsof-kommandoen

Shell-prompt på Linux

Fatmawati Achmad Zaenuri/Shutterstock.com



Hvis alt i Linux er en fil, må det være mer enn bare filer på harddisken. Denne opplæringen viser deg hvordan du bruker |_+_| for å se alle andre enheter og prosesser som håndteres som filer.

På Linux er alt en fil

Den ofte siterte setningen som alt i Linux er en fil er liksom sant. En fil er en samling av bytes. Når de blir lest inn i et program eller sendt til en skriver, ser de ut til generere en strøm av bytes. Når de blir skrevet til, de aksepterer en strøm av bytes.





Mange andre systemkomponenter aksepterer eller genererer strømmer av byte, for eksempel tastaturer, stikkontakter, skrivere og kommunikasjonsprosesser. Fordi de enten aksepterer, genererer eller godtar og genererer bytestrømmer, kan disse enhetene håndteres – på et veldig lavt nivå – som om de var filer.

Dette designkonseptet forenklet implementeringen av Unix operativsystem . Det betydde at et lite sett med behandlere, verktøy og APIer kunne opprettes for å håndtere et bredt spekter av forskjellige ressurser.



Annonse

Dataene og programfilene som ligger på harddisken din er vanlige gamle filsystemfiler. Vi kan bruke |_+_| kommando for å liste dem opp og finne ut noen detaljer om dem.

Hvordan finner vi ut om alle de andre prosessene og enhetene som blir behandlet som om de var filer? Vi bruker |_+_| kommando. Dette viser de åpne filene i systemet. Det vil si at den viser alt som blir håndtert som om det var en fil.

I SLEKT: Hva betyr 'Alt er en fil' i Linux?



lsof-kommandoen

Mange av prosessene eller enhetene som |_+_| kan rapportere om tilhører root eller ble lansert av root, så du må bruke |_+_| kommando med |_+_|.

Og fordi denne oppføringen blir veldig lang, kommer vi til å ta den gjennom |_+_| .

lsof

Før |_+_| output vises GNOME-brukere kan se en advarsel i terminalvinduet.

ls

|_+_| prøver å behandle alle monterte filsystemer. Denne advarselen vises fordi |_+_| har møtt en GNOME virtuelt filsystem (GVFS). Dette er et spesielt tilfelle av en filsystem i brukerområdet (LUNTE). Den fungerer som en bro mellom GNOME, API-ene og kjernen. Ingen – ikke engang root – kan få tilgang til et av disse filsystemene, bortsett fra eieren som monterte det (i dette tilfellet GNOME). Du kan ignorere denne advarselen.

Annonse

Utgangen fra |_+_| er veldig bred. Kolonnene lengst til venstre er:

Kolonnene lengst til høyre er:

Lsof kolonner

Alle kolonner gjelder ikke for alle typer åpne filer. Det er normalt at noen av dem er tomme.

  • Kommando : Navnet på kommandoen knyttet til prosessen som åpnet filen.
  • PID : Prosessidentifikasjonsnummer for prosessen som åpnet filen.
  • TID : Oppgave (tråd) Identifikasjonsnummer. En tom kolonne betyr at det ikke er en oppgave; det er en prosess.
  • Bruker : Bruker-ID eller navn på brukeren som prosessen tilhører, eller bruker-ID eller pålogging til personen som eier katalogen i |_+_| hvor |_+_| finner informasjon om prosessen.
  • FD : Viser filbeskrivelsen til filen. Filbeskrivelser er beskrevet nedenfor.
  • Type : type node knyttet til filen. Notetyper er beskrevet nedenfor.
  • Enhet : Inneholder enten enhetsnumrene, atskilt med kommaer, for en spesialtegn, blokkspesiell, vanlig, katalog eller NFS-fil, eller en kjernereferanseadresse som identifiserer filen. Den kan også vise basisadressen eller enhetsnavnet til en Linux AX.25-sokkelenhet.
  • Størrelse/Av : Viser størrelsen på filen eller filforskyvningen i byte.
  • Node : Viser nodenummeret til en lokal fil, eller inodenummeret til en NFS-fil i serververten, eller internettprotokolltypen. Den kan vise STR for en strøm eller IRQ- eller inodenummeret til en Linux AX.25-sokkelenhet.
  • Navn : Viser navnet på monteringspunktet og filsystemet som filen ligger på.

FD-kolonnen

Filbeskrivelsen i FD-kolonnen kan være ett av mange alternativer; man-siden liste dem alle .

FD-kolonneoppføringen kan bestå av tre deler: en filbeskrivelse, et modustegn og et låsetegn. Noen vanlige filbeskrivelser er:

  • cwd : Gjeldende arbeidskatalog.
  • feil : FD-informasjonsfeil (se kolonnen NAVN).
  • ltx : Delt bibliotektekst (kode og data).
  • m86 : DOS Merge-tilordnet fil.
  • meme : Minnetilordnet fil.
  • mmap : Minnetilordnet enhet.
  • pd : Overordnet katalog.
  • rtd : Rotkatalogen.
  • tekst : Programtekst (kode og data)
  • Et tall som representerer en filbeskrivelse.

Modustegnet kan være ett av følgende:

  • r : Lesetilgang.
  • I : Skrivetilgang.
  • u : Lese- og skrivetilgang.
  • ‘ ‘: Et mellomromstegn, hvis modusen er ukjent og det ikke er noe låsetegn.
  • - : Modus ukjent og det er et låsetegn.

Låsetegnet kan være ett av:

  • r : Les lås på en del av filen.
  • R : Les lås på hele filen.
  • I : Skrivelås på en del av filen.
  • I : Skrivelås på hele filen.
  • u : Lese- og skrivelås av hvilken som helst lengde.
  • U : Ukjent låsetype.
  • ‘ ‘: Et mellomromstegn. Ingen lås.

TYPE-kolonnen

Det er over 70 oppføringer som kan vises i TYPE-kolonnen. Noen vanlige oppføringer du vil se er:

  • REG : Vanlig filsystemfil.
  • TIL DEG : Katalog.
  • FIFO : Først inn først ut.
  • CHR : Tegn spesialfil.
  • BLK : Blokker spesialfil.
  • INET : Internett-uttak.
  • unix : UNIX-domenekontakt

Se prosesser som har åpnet en fil

For å se prosessene som har åpnet en bestemt fil, oppgi navnet på filen som en parameter til |_+_|. For eksempel for å se prosessene som har åpnet |_+_| fil, bruk denne kommandoen:

lsof

|_+_| svarer ved å vise enkeltprosessen, |_+_| som ble startet av brukeren |_+_|.

Se alle filer åpnet fra en katalog

For å se filene som har blitt åpnet fra en katalog, og prosessene som åpnet dem, send katalogen til |_+_| som en parameter. Du må bruke |_+_| (katalog) alternativ.

Annonse

For å se alle filene som er åpne i |_+_| katalog, bruk denne kommandoen:

lsof

|_+_| svarer med en liste over alle åpne filer i den katalogen.

For å se alle filene som er åpnet fra |_+_| katalog, bruk følgende kommando:

sudo

Filene er åpnet fra |_+_| katalogen vises. Merk at med kortere beskrivelser i noen av kolonnene, er hele oppføringen smalere.

Liste filer åpnet av en prosess

For å se filene som har blitt åpnet av en bestemt prosess, bruk |_+_| (kommando) alternativ. Merk at du kan angi mer enn ett søkeord til |_+_| samtidig.

lsof

Annonse

|_+_| gir en liste over filene som har blitt åpnet av en av prosessene gitt på kommandolinjen.

Se Filer åpnet av en bruker

For å begrense visningen til filene som er åpnet av en bestemt bruker, bruk |_+_| (bruker) alternativ. I dette eksemplet ser vi på filene som har blitt åpnet av prosesser som eies eller lanseres på vegne av Mary.

less

Alle filene som er oppført er åpnet på vegne av brukeren Mary. Dette inkluderer filer som for eksempel har blitt åpnet av skrivebordsmiljøet, eller bare som et resultat av at Mary har logget på.

Ekskluderer filer åpnet av en bruker

For å ekskludere filene som er åpnet av en bruker, bruk |_+_| operatør. Å ekskludere brukere fra oppføringen gjør det lettere å finne informasjonen du er interessert i. Du må bruke |_+_| alternativet som før, og legg til |_+_| tegn til starten av brukerens navn.

lsof

Denne gangen, oppføringen for |_+_| katalogen inkluderer ikke noen av filene som har blitt åpnet av brukeren Mary.

Liste filer åpnet av en prosess

For å liste filene som har blitt åpnet av en bestemt prosess, bruk |_+_| (prosess)-alternativet og oppgi prosess-ID som en parameter.

lsof

Annonse

Alle filene som er åpnet av prosess-ID-en du oppgir, er oppført for deg.

Oppføring av prosess-ID-er som har åpnet en fil

For å se prosess-ID-ene for prosessene som har åpnet en bestemt fil, bruk |_+_| (terse) og oppgi navnet på filen på kommandolinjen.

lsof

Prosess-ID-ene vises i en enkel liste.

Bruk OG- og ELLER-søk

La oss liste filene som har blitt åpnet av brukeren Mary, som er relatert til SSH-prosessene. Vi vet at vi kan gi mer enn ett søkeelement på kommandolinjen, så dette bør være enkelt.

lsof

La oss nå se på utgangen fra |_+_|. Det ser ikke riktig ut; det er oppføringer i utdataene som ble startet med root.

Det var ikke det vi forventet. Hva skjedde?

Når du oppgir flere søkeord |_+_| vil returnere alle filer som samsvarer med det første søkeordet eller det andre søkeordet, og så videre. Den utfører med andre ord et ELLER-søk.

For å lage |_+_| utfør et OG-søk, bruk |_+_| (og) alternativ. Dette betyr at de eneste filene som vil bli oppført vil være de som samsvarer med det første søkeordet, og det andre søkeordet, og så videre.

La oss prøve det igjen og bruke |_+_| alternativ.

/proc

Nå er hver fil i oppføringen en som har blitt åpnet av eller på vegne av Mary, og er knyttet til SSH-kommandoen.

Oppdaterer skjermen automatisk

Vi kan bruke |_+_| (gjenta) alternativet for å sette |_+_| i repetisjonsmodus. Gjenta-alternativet kan brukes på to måter, enten |_+_| eller |_+_|. Vi må også legge til antall sekunder vi ønsker |_+_| å vente før du oppdaterer skjermen.

Annonse

Å bruke gjenta-alternativet i begge formatene gjør |_+_| vise resultatene som vanlig, men det legger til en stiplet linje nederst på skjermen. Den venter på antall sekunder som er oppgitt på kommandolinjen og oppdaterer deretter skjermen med et nytt sett med resultater.

Med |_+_| alternativet vil dette fortsette til du trykker Ctrl+C. Med |_+_| format, vil det fortsette til det ikke er noen resultater å vise, eller til du trykker Ctrl+C.

lsof

Legg merke til den stiplede linjen nederst i oppføringen. Dette skiller hver ny visning av data når utdataene oppdateres.

Viser filer knyttet til Internett-tilkoblinger

Den |_+_| (Internett)-alternativet lar deg se filene som åpnes av prosesser knyttet til nettverks- og internettforbindelser.

lsof

Alle filene som åpnes av nettverks- og internettforbindelser vises.

Viser filer knyttet til Internett-tilkoblinger etter prosess-ID

For å se filene åpnet av internettforbindelser som er knyttet til en bestemt prosess-ID, legg til |_+_| alternativet og |_+_| alternativ.

Annonse

Her ser vi etter filer åpnet av en internett- eller nettverkstilkobling, ved en prosess med en ID på 606.

kern.log

Alle filene åpnet av prosess-ID 606 som er knyttet til internett- eller nettverkstilkoblinger, vises.

Vise filer knyttet til Internett-tilkoblinger og kommandoer

Vi kan bruke |_+_| (kommando) for å se etter filer åpnet av spesifikke prosesser. For å se etter filer som har blitt åpnet av internett eller nettverkstilkoblinger knyttet til |_+_| prosess, bruk følgende kommando:

lsof

Alle filene som er åpnet på grunn av ssh-prosessene er oppført i utdataene.

Vise filer knyttet til Internett-tilkoblinger og porter

Vi kan lage |_+_| rapporter om filene som ble åpnet av internett eller nettverkstilkoblinger på en bestemt port. For å gjøre dette bruker vi |_+_| tegn etterfulgt av portnummeret.

Annonse

Her spør vi |_+_| for å liste filene som har blitt åpnet av nettverks- eller internettforbindelser med port 22.

rsyslogd

Alle de oppførte filene ble åpnet av prosesser knyttet til port 22 (som er standardporten for SSH-tilkoblinger).

Vise filer knyttet til Internett-tilkoblinger og protokoller

Vi kan spørre |_+_| for å vise filene som er åpnet av prosesser knyttet til nettverks- og internettforbindelser, som bruker en bestemt protokoll. Vi kan velge mellom TCP, UDP og SMTP. La oss bruke TCP-protokollen og se hva vi får.

syslog

De eneste filene som er oppført er de som er åpnet av prosesser som bruker TCP-protokollen.

Vi har bare skrapet på overflaten

Det er en god forankring i noen vanlige brukstilfeller for |_+_|, men det er mye mer enn det. Akkurat hvor mye mer kan bedømmes av det faktum at man-siden er over 2800 linjer lang.

Den |_+_| kommandoen kan brukes til å bore stadig dypere inn i lagene av åpne filer og pseudo-filer. Vi har gitt et skissekart; atlaset er inne man-siden .

Linux-kommandoer
Filer tjære · pv · katt · tac · chmod · grep · diff · sed · Med · Mann · pushd · popd · fsck · testdisk · seq · fd · pandoc · CD · $PATH · awk · bli med · jq · brette · unik · journalctl · hale · stat · ls · fstab · kastet ut · mindre · chgrp · chown · rev · se · strenger · type · endre navn · glidelås · pakke opp · montere · umount · installere · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · fra · ln · lapp · konvertere · rclone · makulere · SRM
Prosesser alias · skjerm · topp · hyggelig · renice · framgang · strace · system · tmux · chsh · historie · · parti · gratis · hvilken · dmesg · brukermod · ps · chroot · xargs · tty · rosa · lsof · vmstat · pause · vegg · ja · drepe · søvn · sudo · hans · tid · gruppeadd · brukermod · grupper · lshw · skru av · starte på nytt · Stoppe · strøm av · passwd · lscpu · crontab · Dato · bg · fg
Nettverk netstat · ping · traceroute · ip · ss · hvem er · fail2ban · bmon · du · finger · nmap · ftp · krølle · wget · hvem · hvem er jeg · I · iptables · ssh-keygen · ufw

I SLEKT: Beste Linux bærbare datamaskiner for utviklere og entusiaster

LES NESTE Profilbilde for Dave McKay Dave McKay
Dave McKay brukte først datamaskiner da stanset papirtape var på moten, og han har programmert siden. Etter over 30 år i IT-bransjen er han nå teknologijournalist på heltid. I løpet av sin karriere har han jobbet som frilansprogrammerer, leder for et internasjonalt programvareutviklingsteam, prosjektleder for IT-tjenester og sist som databeskyttelsesansvarlig. Hans forfatterskap har blitt publisert av howtogeek.com, cloudsavvyit.com, itenterpriser.com og opensource.com. Dave er en Linux-evangelist og forkjemper for åpen kildekode.
Les hele bio

Interessante Artikler