Sådan kontrolleres åbne filer i Linux

How Check Open Files Linux



Du er måske stødt på ordsprog, Alt er en fil i Linux. Selvom dette ikke er helt rigtigt, holder det et sæt sandheder til det.

I Linux og Unix-lignende systemer er alt som en fil. Det betyder, at ressourcerne i Unix -systemet får tildelt en filbeskrivelse, herunder lagerenheder, netværksstik, processer osv.







En filbeskrivelse er et unikt nummer, der identificerer en fil og andre input/output -enheder. Det beskriver ressourcer, og hvordan kernen får adgang til dem. Tænk på det som en gateway til Kernel abstraktion hardware ressourcer.



Desværre ligger begrebet filbeskrivelser uden for denne tutorials omfang; overvej linket herunder for at komme i gang med at lære mere:



https://da.wikipedia.org/wiki/File_descriptor





Det betyder, at Unix og Unix-lignende systemer som Linux bruger sådanne filer stærkt. Som Linux -strømbruger er det utroligt nyttigt at se de åbne filer og processen og brugere, der bruger dem.

Denne vejledning vil fokusere på måder at se filerne åbne, og hvilken proces eller bruger der er ansvarlig.



Forudsætninger

Inden vi begynder, skal du sikre dig, at du har:

  • Et Linux -system
  • Bruger med root- eller sudo -rettigheder

Hvis du har disse, lad os komme i gang:

LSOF Utility

Oprettet af Victor A Abell, List open files eller lsof for short, er et kommandolinjeværktøj, der giver os mulighed for at se de åbne filer og de processer eller brugere, der åbnede dem.

Lsof -værktøjet er tilgængeligt i større Linux -distributioner; du kan dog finde det ikke installeret, og det kan derfor være nødvendigt at installere det manuelt.

Sådan installeres lsof på Debian/Ubuntu

For at installere det på Debian skal du bruge kommandoen:

sudo apt-get opdatering

sudo apt-get installlsof-og

Sådan installeres på REHL/CentOS

For at installere på REHL og CentOS skal du bruge kommandoen:

sudodnf opdatering

sudodnfinstallerelsof

Sådan installeres på Arch

På Arch skal du ringe til pakkelederen ved hjælp af kommandoen:

sudopacman-Hans

sudopacman-Slsof

Sådan installeres på Fedora

På Fedora skal du bruge kommandoen:

sudo yum installerelsof

Når du har lsof -værktøjet installeret og opdateret, kan vi begynde at bruge det.

Grundlæggende brug

For at bruge lsof -værktøjet skal du indtaste kommandoen:

sudolsof

Når du har udført ovenstående kommando, vil lsof dumpe mange oplysninger som vist herunder:

Ovenstående output viser alle de filer, der åbnes af processerne. Outputtet har forskellige kolonner, der hver repræsenterer specifikke oplysninger om filen.

  • KOMMANDO -kolonnen - viser navnet på den proces, der bruger filen.
  • PID - viser procesidentifikatoren for processen ved hjælp af filen.
  • TID - Viser proces -id (tråde) for processen.
  • TASKCMD - Repræsentér navnet på opgavekommandoen.
  • BRUGER - Ejeren af ​​processen.
  • FD - Viser filbeskrivelsesnummeret. Det er sådan processer bruger filen; de tilgængelige muligheder i denne kolonneudgang inkluderer:
  • cwd - nuværende arbejdsmappe.
  • meme -hukommelseskortet fil
  • pd - forældremappe
  • jld - fængselskatalog
  • ltx - delt bibliotekstekst
  • rtd - rodmappe.
  • txt - programkode og data
  • NS - kernel trace fil.
  • fejle - Fejl i filbeskrivelsesinformation
  • mmp -Hukommelseskortet enhed.
  • TYPE - Viser den nodetype, der er knyttet til filen, f.eks .:
  • Unix - til Unix -domæne -stik.
  • TIL DIG - repræsenterer biblioteket
  • REG - repræsenterer den almindelige fil
  • CHR - repræsenterer specialtegnfilen.
  • LINK - symbolsk linkfil
  • BLK - Bloker særlig fil
  • INET - Internet domæne stik
  • FIFO - et navngivet rør (First In First Out -fil)
  • RØR - til rør

Og mange flere.

  • ENHEDER - Viser enhedsnumre adskilt med kommaer i rækkefølgen af ​​specialtegnfil, blok speciel, almindelig, bibliotek og NFS -fil.
  • STØRRELSE/FRA - viser størrelsen på filen pr fil offset i bytes.
  • NODE - viser node nummeret på den lokale fil, type for internet protokol type osv.
  • NAVN - viser navnet på det monteringspunkt og fs, som filen er placeret på.

Bemærk: Se venligst lsof Manual for detaljerede oplysninger om kolonnerne.

Sådan vises processer, der åbnede en fil

Lsof giver os muligheder, der hjælper os med at filtrere output for kun at vise de processer, der åbnede en bestemt fil.

For eksempel for at se filen, der åbnede filen /bin /bash, skal du bruge kommandoen som:

sudolsof/er/bash

Dette giver dig et output som vist nedenfor:

KOMMANDO PID BRUGER FD TYPE ENHED STØRRELSE/OFF NODE NAME

ksmtuned1025root txt REG253,0 1150704 428303 /usr/er/bash

bash 2968centos txt REG253,0 1150704 428303 /usr/er/bash

bash 3075centos txt REG253,0 1150704 428303 /usr/er/bash

Sådan viser filer åbnet af en bestemt bruger

Vi kan også filtrere output for at vise de filer, der åbnes af en bestemt bruger. Vi gør dette ved at bruge -u -flag efterfulgt af brugernavnet som:

sudolsof-uhundredvis

Dette giver dig et output som vist nedenfor:

Sådan vises filer, der åbnes ved en bestemt proces

Antag, at vi vil se alle de filer, der åbnes ved en bestemt proces? Til dette kan vi bruge procesens PID til at filtrere output.

For eksempel viser kommandoen nedenfor de filer, der åbnes af bash.

sudolsof-s 3075

Dette giver dig kun de filer, der åbnes af systemd som vist:

Sådan vises filer, der er åbnet i et bibliotek

For at få filerne åbnet i et specifikt bibliotek, kan vi sende +D -indstillingen efterfulgt af bibliotekstien.

For eksempel angiver åbne filer i biblioteket /etc.

sudolsof +D/etc

Nedenfor er output for dette:

Sådan viser du netværksforbindelse

Da alt i Linux er en fil, kan vi få netværksfilerne, f.eks. TCP -filer eller forbindelser.

Vi kan bruge kommandoen:

sudolsof-jegTCP

Dette giver dig TCP -forbindelser i systemet.

Du kan også filtrere efter den specifikke port ved hjælp af kommandoen vist nedenfor:

sudolsof-jeg:22

Dette giver dig output som vist herunder:

Sådan viser du filer kontinuerligt

Lsof giver os en tilstand til at sløjfe output hvert par sekunder. Dette giver dig mulighed for løbende at overvåge de filer, der åbnes af en proces eller bruger.

Denne mulighed kræver dog, at du afslutter processen manuelt.

For eksempel overvåger kommandoen nedenfor løbende de filer, der åbnes på port 22:

sudolsof -r-jeg:22

Som du kan se, i den tredje sløjfe, fanger lsof den etablerede forbindelse til serveren på SSH.

Konklusion

Lsof er et utrolig nyttigt værktøj. Det giver dig mulighed for at overvåge for kritiske filer samt overvåge brugere og behandler åbning af filer. Dette kan være utroligt nyttigt, når du foretager fejlfinding eller leder efter ondsindede forsøg på systemet.

Som vist i denne vejledning kan du ved hjælp af forskellige eksempler og metoder kombinere funktionaliteten fra lsof -værktøjet til tilpasset overvågning.

Tak fordi du læste og delte! Jeg håber du har lært noget nyt!