Introduksjon til Lsof

Introduksjon til Lsof

Under Linux regnes mange objekter som en fil, uavhengig av om objektet faktisk er en fil, enhet, katalog eller stikkontakt. Det er enkelt å liste en fil, det er skallet innebygd lsfor det. Men hva om en bruker ønsket å se hvilke filer som for øyeblikket åpnes av webserverprosessen? Eller om den brukeren ønsket å finne ut hvilke filer som er åpnet i en bestemt katalog? Det er der som lsofspiller inn. Tenk deg lsofsom en lsmed tillegg av "åpne filer".

Vær oppmerksom på at mens BSD-ene har et annet verktøy for denne jobben, fstathar flere andre varianter av Unix (Solaris, for eksempel) også lsof. Alternativene og flaggene er forskjellige på de andre plattformene, så vel som utseendet på utdataene, men generelt bør kunnskapen i denne artikkelen også være aktuelt for dem.

La oss først se på lsofutdataformatet og hvordan det skal leses. Den vanlige utgangen lsofuten noen parametere vil ligne følgende. Dette er trimmet for lesbarhet.

COMMAND    PID  TID       USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
init         1            root  cwd       DIR              254,1      4096          2 /
init         1            root  rtd       DIR              254,1      4096          2 /
init         1            root  txt       REG              254,1     36992    7077928 /sbin/init
init         1            root  mem       REG              254,1     14768    7340043 /lib/x86_64-linux-gnu/libdl-2.13.so
init         1            root  mem       REG              254,1   1603600    7340040 /lib/x86_64-linux-gnu/libc-2.13.so
init         1            root  mem       REG              254,1    126232    7340078 /lib/x86_64-linux-gnu/libselinux.so.1
init         1            root  mem       REG              254,1    261184    7340083 /lib/x86_64-linux-gnu/libsepol.so.1
init         1            root  mem       REG              254,1    136936    7340037 /lib/x86_64-linux-gnu/ld-2.13.so
init         1            root   10u     FIFO               0,14       0t0       4781 /run/initctl

Disse kolonnene betyr følgende:

  • COMMAND - Prosessen som en åpen fil tilhører, i dette eksemplet er alt relatert til init.
  • PID - Prosessidentifikasjonsnummeret til nevnte prosess.
  • BRUKER - Brukeren som prosessen kjører under. For init, det er nesten alltid root.
  • FD - Filbeskrivelsen til filen, den vanligste er:
    • cwd- Den gjeldende arbeidskatalogen (du vil kanskje legge merke til likheten med pwdkommandoen som skriver ut den gjeldende arbeidskatalogen).
    • rtd - Rotkatalogen til en prosess.
    • txt- A text file, dette kan enten bety en konfigurasjonsfil relatert til prosessen eller "kildekoden" relatert til (eller tilhører) prosessen.
    • mem - En såkalt "memory mapped file", det vil si et segment av virtuelt minne (les: RAM) som er tilordnet en fil.
    • Et tall - tallet representerer den faktiske filbeskrivelsen, tegnet etter tallet er modusen som filen åpnes i:
    • r - Les.
    • w - Skrive.
    • u - Lese og skrive.
  • TYPE - Spesifiserer den faktiske typen fil, de vanligste er:
    • REG - En vanlig fil.
    • DIR - En katalog.
    • FIFO - Først inn først ut.
  • ENHET - Hoved- og undernummeret til enheten som inneholder filen.
  • STØRRELSE - Størrelsen på filen, i byte.
  • NODE - Inodenummeret til filen.
  • NAME – Navnet på filen.

Dette kan være litt overveldende foreløpig, men hvis du jobber med lsofet par ganger, vil det raskt synke inn i hjernen din.

Som nevnt ovenfor er produksjonen av lsofblitt forkortet her. Uten noen argumenter eller filtre, lsofproduserer hundrevis av utdatalinjer som bare vil gjøre deg forvirret.

Det er to grunnleggende tilnærminger for å løse dette problemet:

  • Bruk ett eller flere av lsofkommandolinjealternativene for å begrense resultatene.
  • Rør utgangen gjennom for eksempel grep.

Selv om det siste alternativet kan høres mer behagelig ut siden du ikke trenger å huske lsofkommandolinjealternativene, er det generelt ikke så fleksibelt og effektivt, så vi holder oss til det første.

La oss forestille oss at du vil åpne en fil med favoritttekstredigeringsprogrammet ditt, og at tekstredigeringsprogrammet forteller deg at den kun kan åpnes i skrivebeskyttet modus fordi et annet program allerede har tilgang til den. lsofvil hjelpe deg å finne ut hvem gjerningsmannen er:

lsof /path/to/your/file

Dette vil produsere en utgang som ligner på dette:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
vim 2679 root    5w   REG  254,1   121525 6035622 /root/lsof.txt

Tilsynelatende har du glemt å lukke og eldre økt! Et svært lignende problem oppstår når du prøver å avmontere en NFS-ressurs og umountforteller deg at det ikke kan fordi noe fortsatt har tilgang til den monterte mappen. Igjen, lsofkan hjelpe deg med å identifisere den skyldige:

lsof +D /path/to/your/directory/

Legg merke til den etterfølgende skråstreken, det er viktig. Ellers lsofvil du anta at du mener en vanlig fil. Ikke bli forvirret av den +foran flagget - lsofhar så mange kommandolinjealternativer som den trenger +i tillegg til de mer vanlige -. Utgangen vil se slik ut:

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
mocp    5637  music    4r   REG   0,19 10147719 102367344 /home/Music/RMS_GNU_SONG.ogg

Det betyr at prosessen mocpmed PID som 5637tilhører brukeren musichar åpnet en fil kalt RMS_GNU_SONG.ogg. Men selv etter at du har lukket den prosessen, er det fortsatt et problem - NFS-volumet kan ikke demonteres.

lsofhar et -cflagg som viser åpnede filer et vilkårlig prosessnavn.

lsof -c mocp

Det vil gi en utgang som ser slik ut:

mocp    9383  music    4r   REG   0,19 10147719 102367344 /home/Music/ANOTHER_RMS_GNU_SONG.ogg

I dette eksemplet er det en annen forekomst av mocpkjøring, som hindrer deg i å demontere delingen. Etter å ha stengt den prosessen, vil du forsikre deg om at brukeren ikke musichar andre potensielt problematiske filer åpne. lsofhar et -uflagg for å vise filer åpnet av en bestemt bruker. Husk at en fil ikke alltid bare er en vanlig fil på harddisken din!

lsof -u music

Du kan også sende flere brukere, atskilt med komma:

lsof -u music,moremusic

En viktig merknad om standardoppførselen til lsof: resultatene er ELLER- baserte, noe som betyr at du vil se filresultater åpnet av prosesser som eies av enten brukeren musiceller brukeren moremusic. Hvis du ønsker å se resultater som samsvarer med prosesser som eies av begge brukerne, må du sende flagget -a:

lsof -au music, moremusic

Siden begge brukerne er i gruppen musicusers, kan du også liste filer basert på gruppe:

lsof -g musicusers

Du kan også kombinere kommandolinjeflagg:

lsof -u music,moremusic -c mocp

or

lsof -u ^music +D /home/Music

I den siste linjen la vi til et annet spesialflagg - ^, som står for et logisk IKKE . Hvis utgangen er tom etter å ha kjørt den kommandoen, vil demonteringen mest sannsynlig være vellykket.

I de forrige eksemplene så vi stort sett på vanlige filer. Hva med stikkontakter og nettverkstilkoblinger?

For å liste opp alle gjeldende nettverkstilkoblinger lsofhar -iflagget:

lsof -i

Utgangen ligner på det vi har sett så langt...

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
owncloud  3509  myuser   25u  IPv4  44946      0t0  TCP strix.local:34217->myserver.vultr.com:https (ESTABLISHED)
firefox   3612  myuser   82u  IPv4  49663      0t0  TCP strix.local:43897->we-in-f100.1e100.net:https (ESTABLISHED)
ssh       3784  myuser    3u  IPv4  10437      0t0  TCP strix.local:51416->someserver.in:ssh (ESTABLISHED)
wget      4140  myuser    3w  IPv4  45586      0t0  TCP strix.local:54460->media.ccc.de:http (CLOSE_WAIT)

... bortsett fra én forskjell: i stedet for filnavn eller kataloger, viser kolonnen NAMEnå tilkoblingsinformasjon. Hver tilkobling består av følgende deler:

  • Protokoll.
  • Lokalt vertsnavn.
  • Kildeport for tilkoblingen.
  • Destinasjons-DNS-navn.
  • Destinasjonshavn.
  • Status for tilkoblingen.

Som med mange andre verktøy, kan du melde deg ut av løse DNS-navn og porter ( -nog -Phenholdsvis). Flagget -itar flere parametere. Du kan spesifisere om du vil vise tcp, udpeller icmptilkoblinger eller visse porter:

lsof -i :25
or
lsof -i :smtp

Igjen kan parametere kombineres. Følgende eksempel...

lsof -i tcp:80

... vil bare vise deg TCP-tilkoblinger som bruker port 80. Du kan også kombinere det med alternativene du allerede kjenner fra "klassiske" filer:

lsof -a -u httpd -i tcp

Dette vil vise deg alle TCP-tilkoblinger som er åpnet av brukeren httpd. Legg merke til -aflagget, som endrer standardoppførselen til lsof(som nevnt tidligere). Som med de fleste kommandolinjeverktøy, kan du gå ekstremt dypt. Følgende vil bare vise deg TCP-forbindelser hvis tilstand er "ETABLISERT":

lsof -i -s TCP:ESTABLISHED

På dette tidspunktet bør du ha en grunnleggende forståelse av hvordan lsoffungerer, sammen med noen vanlige brukstilfeller. For ytterligere lesing, se manpage lsofpå systemet ditt.


Sett opp Cacti på Debian Jessie

Sett opp Cacti på Debian Jessie

Introduksjon Cacti er et åpen kildekode overvåkings- og grafverktøy som er fullt basert på RRD-data. Gjennom Cacti kan du overvåke nesten alle typer enheter

Installer Lets Encrypt SSL på ett-klikks WordPress-appen

Installer Lets Encrypt SSL på ett-klikks WordPress-appen

Introduksjon Lets Encrypt er en sertifikatmyndighetstjeneste som tilbyr gratis TLS/SSL-sertifikater. Installasjonsprosessen forenkles av Certbot,

Sett opp iRedMail på Debian Wheezy

Sett opp iRedMail på Debian Wheezy

Bruker du et annet system? Denne opplæringen viser deg hvordan du installerer gruppevaren iRedMail på en ny installasjon av Debian Wheezy. Du bør bruke en serve

Tre gratis serverkontrollpaneler (hurtiginstallasjon)

Tre gratis serverkontrollpaneler (hurtiginstallasjon)

1. Virtualmin/Webmin Virtualmin er et kraftig og fleksibelt kontrollpanel for webhotell for Linux- og UNIX-systemer basert på den velkjente Open Source-nettbasen

Bruker skjermen på Ubuntu 14.04

Bruker skjermen på Ubuntu 14.04

Skjerm er et program som tillater flere bruk av terminalsesjoner i ett vindu. Dette lar deg simulere flere terminalvinduer der det ma

Bruke Logrotate til å administrere loggfiler

Bruke Logrotate til å administrere loggfiler

Introduksjon Logrotate er et Linux-verktøy som forenkler administrasjonen av loggfiler. Den kjører vanligvis en gang om dagen via en cron-jobb, og administrerer loggbasen

Installere Docker CE på Ubuntu 16.04

Installere Docker CE på Ubuntu 16.04

Bruker du et annet system? Docker er en applikasjon som gjør det mulig å distribuere programmer som kjøres som containere. Det ble skrevet i det populære Go-programmet

Patching the Dirty Cow Exploit på CentOS

Patching the Dirty Cow Exploit på CentOS

Hva er Dirty Cow (CVE-2016-5195)? Dirty Cow-sårbarheten utnyttes gjennom hvordan Linux behandler kode. Det gjør det mulig for en uprivilegert bruker å gai

Konfigurer en ikke-rootbruker med Sudo Access på Ubuntu

Konfigurer en ikke-rootbruker med Sudo Access på Ubuntu

Å ha bare én bruker, som er root, kan være farlig. Så la oss fikse det. Vultr gir oss friheten til å gjøre som vi vil med våre brukere og våre servere

Installer Adminer på Debian/Ubuntu

Installer Adminer på Debian/Ubuntu

Adminer er et lett alternativ til phpMyAdmin. Til sammenligning er dens totale pakkestørrelse 400 KB, mot 4,2 MB med phpMyAdmin. I motsetning til phpMyAdmin, som

Slik installerer du GoAccess på Ubuntu 16.04

Slik installerer du GoAccess på Ubuntu 16.04

Bruker du et annet system? GoAccess er en åpen kildekode-nettlogganalysator. Du kan bruke den til analyse av logger på sanntidsbasis i enten terminalen eller

Konfigurer Nagios på Ubuntu: Del 1 - Nagios Server

Konfigurer Nagios på Ubuntu: Del 1 - Nagios Server

Denne artikkelen er en del av en todelt serie om installasjon og konfigurering av Nagios på Ubuntu 14.04. Del 1: Nagios Server Del 2: Oversikt over ekstern vert Nagio

Sett opp tidssone og NTP på Ubuntu 14.04

Sett opp tidssone og NTP på Ubuntu 14.04

Vultr-servere kan ikke distribueres med tidssonen/datoen/klokkeslettet du trenger på serveren din. Heldigvis kan vi manuelt stille inn tidssonen for å forhindre problemer

Distribuer en Meteor-applikasjon på Ubuntu

Distribuer en Meteor-applikasjon på Ubuntu

Denne artikkelen vil lede deg gjennom distribusjon av Meteor-appen din til en Vultr VPS som kjører Ubuntu 14.04. Det kan også fungere på andre Linux-distribusjoner (forsøk a

Arbeide med Linux-funksjoner

Arbeide med Linux-funksjoner

Introduksjon Linux-funksjoner er spesielle attributter i Linux-kjernen som gir prosesser og binære kjørbare spesifikke rettigheter som er normale

Høy tilgjengelighet ved bruk av privat nettverk på Ubuntu 16.04 med Keepalived

Høy tilgjengelighet ved bruk av privat nettverk på Ubuntu 16.04 med Keepalived

Noen arkitekturer med høy tilgjengelighet krever en flytende IP-adresse. Denne funksjonaliteten er tilgjengelig på Vultr-plattformen når privat nettverk har bee

Konfigurer bare SFTP-brukerkontoer på Ubuntu 14

Konfigurer bare SFTP-brukerkontoer på Ubuntu 14

Innledning Enkelte scenarier krever at du oppretter brukere med lese- og skrivetilgang til en enkelt katalog kun via FTP. Denne artikkelen vil vise deg hvordan t

Slik konfigurerer du Node.js Persistent-applikasjoner på Ubuntu 16.04

Slik konfigurerer du Node.js Persistent-applikasjoner på Ubuntu 16.04

Node.js-applikasjoner er populære for deres evne til å skalere. Å kjøre flere samtidige prosesser på flere servere gir lavere ventetid og større oppetid

Overvåk enhetene dine ved å bruke LibreNMS på Ubuntu 16.04

Overvåk enhetene dine ved å bruke LibreNMS på Ubuntu 16.04

Bruker du et annet system? LibreNMS er et fullverdig åpen kildekode-nettverksovervåkingssystem. Den bruker SNMP for å hente data fra forskjellige enheter. En variant

Stopp DHCP fra å endre resolv.conf

Stopp DHCP fra å endre resolv.conf

For DHCP-brukere kan det hende du trenger å redigere /etc/resolv.conf for å bruke andre navneservere. Deretter, etter en periode (eller etter en omstart av systemet)

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Kunstig intelligens er ikke i fremtiden, det er her akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.

DDOS-angrep: en kort oversikt

DDOS-angrep: en kort oversikt

Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.

Har du noen gang lurt på hvordan hackere tjener penger?

Har du noen gang lurt på hvordan hackere tjener penger?

Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.

Evolusjon av datalagring – infografikk

Evolusjon av datalagring – infografikk

Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.

Funksjonaliteter til Big Data Reference Architecture Layers

Funksjonaliteter til Big Data Reference Architecture Layers

Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer