Introduktion til Lsof

Introduktion til Lsof

Under Linux betragtes mange objekter som en fil, uanset om objektet faktisk er en fil, enhed, mappe eller socket. Det er nemt at angive en fil, der er indbygget shell lstil det. Men hvad nu hvis en bruger ville se, hvilke filer der i øjeblikket åbnes af webserverprocessen? Eller hvis den bruger ønskede at finde ud af, hvilke filer der er åbnet i en bestemt mappe? Det er her, der lsofspiller ind. Forestil dig lsofsom en lsmed tilføjelse af "åbne filer".

Bemærk venligst, at selvom BSD'erne har et andet værktøj til dette job, fstathar flere andre varianter af Unix (f.eks. Solaris) også lsof. Indstillingerne og flagene er forskellige på de andre platforme, såvel som udseendet af outputtet, men generelt burde viden i denne artikel også være anvendelig for dem.

Lad os først se på lsofoutputformatet, og hvordan det skal læses. Det sædvanlige output lsofuden nogen parametre ville ligne følgende. Dette er blevet trimmet for læsbarhed.

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 kolonner betyder følgende:

  • COMMAND - Processen som en åben fil tilhører, i dette eksempel er alt relateret til init.
  • PID - Processens identifikationsnummer for nævnte proces.
  • BRUGER - Brugeren som processen kører under. For initdet er næsten altid root.
  • FD - Filbeskrivelsen af ​​filen, den mest almindelige er:
    • cwd- Den aktuelle arbejdsmappe (du vil muligvis bemærke ligheden med pwdkommandoen, der udskriver den aktuelle arbejdsmappe).
    • rtd - Rodbiblioteket for en proces.
    • txt- A text file, dette kan enten betyde en konfigurationsfil relateret til processen eller "kildekoden" relateret til (eller tilhører) processen.
    • mem - En såkaldt "memory mapped file", det vil sige et segment af virtuel hukommelse (læs: RAM), der er blevet tildelt en fil.
    • Et tal - tallet repræsenterer den faktiske filbeskrivelse, tegnet efter tallet er den tilstand, hvori filen åbnes:
    • r - Læs.
    • w - Skriv.
    • u - Læs og skriv.
  • TYPE - Angiver den faktiske type af filen, de mest almindelige er:
    • REG - En almindelig fil.
    • DIR - En mappe.
    • FIFO - Først ind først ud.
  • DEVICE - Hoved- og undernummeret på den enhed, der indeholder filen.
  • STØRRELSE - Filens størrelse i bytes.
  • NODE - Inodenummeret på filen.
  • NAVN - Navnet på filen.

Dette er måske en lille smule overvældende for nu, men hvis du arbejder med lsofet par gange, vil det hurtigt synke ind i din hjerne.

Som nævnt ovenfor er outputtet af lsofblevet forkortet her. Uden nogen argumenter eller filtre, lsofproducerer hundredvis af linjer af output, som kun vil efterlade dig forvirret.

Der er to grundlæggende tilgange til at løse dette problem:

  • Brug en eller flere af lsofkommandolinjeindstillingerne til at indsnævre resultaterne.
  • Led udgangen gennem f.eks grep.

Mens sidstnævnte mulighed kan lyde mere behagelig, da du ikke behøver at huske lsofkommandolinjeindstillingerne, er den generelt ikke så fleksibel og effektiv, så vi holder os til den første.

Lad os forestille os, at du vil åbne en fil med din foretrukne teksteditor, og at teksteditoren fortæller dig, at den kun kan åbnes i skrivebeskyttet tilstand, fordi et andet program allerede har adgang til den. lsofvil hjælpe dig med at finde ud af, hvem gerningsmanden er:

lsof /path/to/your/file

Dette vil producere et output svarende til dette:

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

Tilsyneladende har du glemt at lukke og ældre session! Et meget lignende problem opstår, når du forsøger at afmontere en NFS-share og umountfortæller dig, at det ikke kan, fordi noget stadig har adgang til den monterede mappe. Igen, lsofkan hjælpe dig med at identificere den skyldige:

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

Læg mærke til den efterfølgende skråstreg, det er vigtigt. Ellers lsofvil antage, at du mener en almindelig fil. Bliv ikke forvirret af den +foran flaget - lsofhar så mange kommandolinjeindstillinger, som den har brug +for ud over de mere almindelige -. Outputtet ville se sådan ud:

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 betyder, at processen mocpmed PID'et 5637tilhørende brugeren musichar åbnet en fil kaldet RMS_GNU_SONG.ogg. Men selv efter at have lukket denne proces, er der stadig et problem - NFS-diskenheden kan ikke afmonteres.

lsofhar et -cflag, der viser åbnede filer et vilkårligt procesnavn.

lsof -c mocp

Det ville producere et output, der ser sådan ud:

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

I dette eksempel er der en anden forekomst af mocpkørsel, der forhindrer dig i at afmontere delingen. Efter at have lukket den proces ned, vil du sikre dig, at brugeren ikke musichar andre potentielt problematiske filer åbne. lsofhar et -uflag til at vise filer åbnet af en bestemt bruger. Husk, en fil er ikke altid bare en almindelig fil på din harddisk!

lsof -u music

Du kan også sende flere brugere, adskilt af kommaer:

lsof -u music,moremusic

En vigtig bemærkning om standardadfærden for lsof: resultaterne er ELLER- baserede, hvilket betyder, at du vil se filresultater åbnet af processer, der ejes af enten brugeren musiceller brugeren moremusic. Hvis du ønskede at se resultater, der matcher processer, der ejes af begge brugere, skal du videregive flaget -a:

lsof -au music, moremusic

Da begge brugere er i gruppen musicusers, kan du også liste filer baseret på gruppe:

lsof -g musicusers

Du kan også kombinere kommandolinjeflag:

lsof -u music,moremusic -c mocp

or

lsof -u ^music +D /home/Music

I den sidste linje tilføjede vi endnu et specielt flag - ^, som står for et logisk IKKE . Hvis outputtet er tomt efter at have kørt den kommando, vil afmonteringen højst sandsynligt lykkes.

I de foregående eksempler så vi for det meste på almindelige filer. Hvad med stikkontakter og netværksforbindelser?

For at liste alle aktuelle netværksforbindelser lsofhar -iflaget:

lsof -i

Outputtet ligner det, vi har set indtil videre...

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)

... bortset fra en forskel: i stedet for filnavne eller mapper viser kolonnen NAMEnu forbindelsesinformation. Hver forbindelse består af følgende dele:

  • Protokol.
  • Lokalt værtsnavn.
  • Forbindelsens kildeport.
  • Destinations-DNS-navn.
  • Destinationshavn.
  • Status for forbindelsen.

Som med mange andre værktøjer, kan du fravælge løse DNS-navne og porte ( -nog -Phenholdsvis). Flaget -itager yderligere parametre. Du kan angive, om du vil vise tcp, udpeller icmpforbindelser eller visse porte:

lsof -i :25
or
lsof -i :smtp

Igen kan parametre kombineres. Følgende eksempel...

lsof -i tcp:80

... vil kun vise dig TCP-forbindelser ved hjælp af port 80. Du kan også kombinere det med de muligheder, du allerede kender fra "klassiske" filer:

lsof -a -u httpd -i tcp

Dette vil vise dig alle TCP-forbindelser åbnet af brugeren httpd. Bemærk -aflaget, som ændrer standardadfærden for lsof(som tidligere nævnt). Som med de fleste kommandolinjeværktøjer kan du gå ekstremt dybt. Følgende vil kun vise dig TCP-forbindelser, hvis tilstand er "ETABLISHED":

lsof -i -s TCP:ESTABLISHED

På dette tidspunkt bør du have en grundlæggende forståelse af, hvordan det lsoffungerer, sammen med nogle almindelige brugssager. For yderligere læsning, se manpage lsofpå dit system.


Opsæt Cacti på Debian Jessie

Opsæt Cacti på Debian Jessie

Introduktion Cacti er et open source overvågnings- og grafværktøj, som er fuldt baseret på RRD-data. Gennem Cacti kan du overvåge næsten enhver type enhed

Installer Lets Encrypt SSL på One-Click WordPress App

Installer Lets Encrypt SSL på One-Click WordPress App

Introduktion Lets Encrypt er en certifikatmyndighedstjeneste, der tilbyder gratis TLS/SSL-certifikater. Installationsprocessen forenkles af Certbot,

Konfigurer iRedMail på Debian Wheezy

Konfigurer iRedMail på Debian Wheezy

Bruger du et andet system? Denne vejledning viser dig, hvordan du installerer groupware iRedMail på en ny installation af Debian Wheezy. Du bør bruge en serve

Sådan installeres Lighttpd (LLMP Stack) på CentOS 6

Sådan installeres Lighttpd (LLMP Stack) på CentOS 6

Introduktion Lighttpd er en forgrening af Apache, der sigter mod at være meget mindre ressourcekrævende. Den er let, deraf navnet, og den er ret enkel at bruge. Installer

Tre gratis serverkontrolpaneler (hurtig installation)

Tre gratis serverkontrolpaneler (hurtig installation)

1. Virtualmin/Webmin Virtualmin er et kraftfuldt og fleksibelt webhotel kontrolpanel til Linux og UNIX systemer baseret på den velkendte Open Source web-base

Opsætning af en Yii-applikation på Ubuntu 14.04

Opsætning af en Yii-applikation på Ubuntu 14.04

Yii er en PHP-ramme, der giver dig mulighed for at udvikle applikationer hurtigere og nemmere. Installation af Yii på Ubuntu er ligetil, da du vil lære nøjagtigt

Brug af skærm på Ubuntu 14.04

Brug af skærm på Ubuntu 14.04

Screen er et program, der tillader flere terminalsessioner inden for et vindue. Dette giver dig mulighed for at simulere flere terminalvinduer, hvor det ma

Brug af Logrotate til at administrere logfiler

Brug af Logrotate til at administrere logfiler

Introduktion Logrotate er et Linux-værktøj, der forenkler administrationen af ​​logfiler. Det kører typisk en gang om dagen via et cron-job og administrerer logbasen

Konfiguration af statisk netværk og IPv6 på CentOS 7

Konfiguration af statisk netværk og IPv6 på CentOS 7

VULTR har for nylig foretaget ændringer i deres ende, og alt skulle nu fungere fint ud af boksen med NetworkManager aktiveret. Skulle du ønske at deaktivere

Ændring af Icinga2 til at bruge Master/Client Model på CentOS 6 eller CentOS 7

Ændring af Icinga2 til at bruge Master/Client Model på CentOS 6 eller CentOS 7

Icinga2 er et kraftfuldt overvågningssystem, og når det bruges i en master-klient-model, kan det erstatte behovet for NRPE-baserede overvågningstjek. Mester-klienten

Kompiler og installer Nginx med PageSpeed-modulet på Debian 8

Kompiler og installer Nginx med PageSpeed-modulet på Debian 8

I denne artikel vil vi se, hvordan du kompilerer og installerer Nginx mainline fra de officielle kilder til Nginx med PageSpeed-modulet, som giver dig mulighed for at

Sådan installeres Apache Cassandra 3.11.x på CentOS 7

Sådan installeres Apache Cassandra 3.11.x på CentOS 7

Bruger du et andet system? Apache Cassandra er et gratis og open source NoSQL-databasestyringssystem, der er designet til at give skalerbarhed, høj

Sådan installeres Kanboard på Ubuntu 18.04 LTS

Sådan installeres Kanboard på Ubuntu 18.04 LTS

Bruger du et andet system? Introduktion Kanboard er et gratis og open source projektstyringssoftwareprogram, som er designet til at lette og visualisere

Sådan installeres Kanboard på Debian 9

Sådan installeres Kanboard på Debian 9

Bruger du et andet system? Introduktion Kanboard er et gratis og open source projektstyringssoftwareprogram, som er designet til at lette og visualisere

Sådan installeres Gitea på Debian 9

Sådan installeres Gitea på Debian 9

Bruger du et andet system? Gitea er et alternativt open source, selvhostet versionskontrolsystem drevet af Git. Gitea er skrevet på Golang og er

Sådan installeres Gitea på Ubuntu 18.04

Sådan installeres Gitea på Ubuntu 18.04

Bruger du et andet system? Gitea er et alternativt open source, selv-hostet versionskontrolsystem drevet af git. Gitea er skrevet på Golang og er

Sådan installeres Thelia 2.3 på Debian 9

Sådan installeres Thelia 2.3 på Debian 9

Bruger du et andet system? Thelia er et open source-værktøj til at skabe e-business-websteder og administrere onlineindhold skrevet i PHP. Thelia kildekode i

Patching the Dirty Cow Exploit på CentOS

Patching the Dirty Cow Exploit på CentOS

Hvad er Dirty Cow (CVE-2016-5195)? Dirty Cow-sårbarheden udnyttes gennem, hvordan Linux behandler kode. Det giver en uprivilegeret bruger mulighed for at gai

Konfigurer en ikke-rootbruger med Sudo Access på Ubuntu

Konfigurer en ikke-rootbruger med Sudo Access på Ubuntu

Det kan være farligt at have kun én bruger, som er root. Så lad os ordne det. Vultr giver os friheden til at gøre som vi vil med vores brugere og vores servere

Installer Adminer på Debian/Ubuntu

Installer Adminer på Debian/Ubuntu

Adminer er et letvægtsalternativ til phpMyAdmin. Til sammenligning er dens samlede pakkestørrelse 400KB mod 4,2 MB phpMyAdmin. I modsætning til phpMyAdmin, som

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 lige i nuet I denne blog Læs, hvordan kunstig intelligens-applikationer har påvirket forskellige sektorer.

DDOS-angreb: et kort overblik

DDOS-angreb: et kort overblik

Er du også et offer for DDOS-angreb og forvirret over forebyggelsesmetoderne? Læs denne artikel for at løse dine spørgsmål.

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Du har måske hørt, at hackere tjener mange penge, men har du nogensinde spekuleret på, hvordan tjener de den slags penge? lad os diskutere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Vil du se revolutionerende opfindelser fra Google, og hvordan disse opfindelser ændrede livet for ethvert menneske i dag? Læs derefter til bloggen for at se opfindelser fra Google.

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Konceptet med selvkørende biler til at køre på vejene ved hjælp af kunstig intelligens er en drøm, vi har haft i et stykke tid nu. Men på trods af flere løfter er de ingen steder at se. Læs denne blog for at lære mere...

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Efterhånden som videnskaben udvikler sig i et hurtigt tempo og overtager en stor del af vores indsats, stiger risikoen for at udsætte os selv for en uforklarlig Singularitet. Læs, hvad singularitet kunne betyde for os.

Udvikling af datalagring – Infografik

Udvikling af datalagring – Infografik

Opbevaringsmetoderne for dataene har været under udvikling, kan være siden fødslen af ​​dataene. Denne blog dækker udviklingen af ​​datalagring på basis af en infografik.

Funktioner af Big Data Reference Architecture Layers

Funktioner af Big Data Reference Architecture Layers

Læs bloggen for at kende forskellige lag i Big Data-arkitekturen og deres funktionaliteter på den enkleste måde.

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

I denne digitalt drevne verden er smarte hjemmeenheder blevet en afgørende del af livet. Her er et par fantastiske fordele ved smarte hjemmeenheder om, hvordan de gør vores liv værd at leve og enklere.

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

For nylig udgav Apple macOS Catalina 10.15.4 en supplerende opdatering for at løse problemer, men det ser ud til, at opdateringen forårsager flere problemer, hvilket fører til mursten af ​​mac-maskiner. Læs denne artikel for at lære mere