Hur man kontrollerar öppna filer i Linux

How Check Open Files Linux



Du kanske har stött på talesättet, Allt är en fil i Linux. Även om detta inte är helt sant, håller det en uppsättning sanningar till det.

I Linux och Unix-liknande system är allt som en fil. Det betyder att resurserna i Unix -systemet tilldelas en filbeskrivning, inklusive lagringsenheter, nätverksuttag, processer etc.







En filbeskrivare är ett unikt nummer som identifierar en fil och andra in-/utmatningsenheter. Den beskriver resurser och hur kärnan kommer åt dem. Tänk på det som en inkörsport till Kernel -abstraktionens hårdvaruresurser.



Tyvärr ligger begreppet filbeskrivare utanför ramen för denna handledning; överväga länken nedan för att komma igång med att lära dig mer:



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





Det betyder att Unix och Unix-liknande system som Linux använder sådana filer kraftigt. Som Linux -kraftanvändare är det otroligt användbart att se de öppna filerna och processen och användare som använder dem.

Denna handledning kommer att fokusera på sätt att se filerna öppna och vilken process eller användare som är ansvarig.



Förkunskaper

Innan vi börjar, se till att du har:

  • Ett Linux -system
  • Användare med root- eller sudo -privilegier

Om du har dessa, låt oss komma igång:

LSOF -verktyg

Skapad av Victor A Abell, List open files, eller kortfattat lsof, är ett kommandoradsverktyg som låter oss se de öppna filerna och processerna eller användare som öppnade dem.

Lsof -verktyget finns i större Linux -distributioner; Du kan dock upptäcka att den inte är installerad och därför kan behöva installeras manuellt.

Så här installerar du lsof på Debian/Ubuntu

För att installera det på Debian, använd kommandot:

sudo apt-get uppdatering

sudo apt-get installlsof-och

Så här installerar du på REHL/CentOS

För att installera på REHL och CentOS, använd kommandot:

sudodnf uppdatering

sudodnfInstalleralsof

Hur man installerar på Arch

På Arch, ring pakethanteraren med kommandot:

sudoPac Man-Hans

sudoPac Man-Slsof

Hur man installerar på Fedora

På Fedora använder du kommandot:

sudo yum installeralsof

När du har lsof -verktyget installerat och uppdaterat kan vi börja använda det.

Grundläggande användning

Om du vill använda lsof -verktyget anger du kommandot:

sudolsof

När du väl har utfört ovanstående kommando kommer lsof att dumpa mycket information enligt nedan:

Ovanstående utmatning visar alla filer som öppnats av processerna. Utdata har olika kolumner, var och en representerar specifik information om filen.

  • KOMMANDO -kolumnen - visar namnet på processen som använder filen.
  • PID - visar processidentifieraren för processen som använder filen.
  • TID - Visar processens uppgifts -ID (trådar).
  • TASKCMD - Representera namnet på uppgiftskommandot.
  • ANVÄNDARE - Ägaren till processen.
  • FD - Visar filbeskrivningsnumret. Detta är hur processer använder filen; alternativen som finns tillgängliga i denna kolumnutmatning inkluderar:
  • cwd - nuvarande arbetskatalog.
  • jag Jag -minneskartad fil
  • pd - överordnad katalog
  • jld - fängelsekatalog
  • ltx - delad bibliotekstext
  • rtd - rotkatalog.
  • Text - programkod och data
  • NS - kärnspårningsfil.
  • fela - Fel på filbeskrivningsinformation
  • mmp -Minneskartad enhet.
  • TYP - Visar vilken typ av nod som är associerad med filen, till exempel:
  • Unix - för Unix -domänuttag.
  • TILL DIG - representerar katalogen
  • REG - representerar den vanliga filen
  • CHR - representerar specialteckenfilen.
  • LÄNK - symbolisk länkfil
  • BLK - Blockera specialfil
  • INET - Internet domän uttag
  • FIFO - ett namngivet rör (First In First Out -fil)
  • RÖR - för rör

Och många fler.

  • ENHETER - Visar enhetsnumren separerade med kommatecken i ordningen med specialteckenfil, block special, vanlig, katalog och NFS -fil.
  • STORLEK/AV - visar storleken på filen pr -filförskjutning i byte.
  • NOD - visar nodnumret för den lokala filen, typ för internetprotokollstyp, etc.
  • NAMN - visar namnet på den monteringspunkt och fs som filen ligger på.

Notera: Se lsof Manual för detaljerad information om kolumnerna.

Hur man visar processer som öppnade en fil

Lsof ger oss alternativ som hjälper oss att filtrera utdata för att bara visa processerna som öppnade en specifik fil.

Till exempel, för att se filen som öppnade filen /bin /bash, använd kommandot som:

sudolsof/am/våldsamt slag

Detta ger dig en utmatning enligt nedan:

KOMMANDO PID ANVÄNDARE FD TYPENHETSSTORLEK/AV NODNAMN

ksmtuned1025root txt REG253,0 1150704 428303 /usr/am/våldsamt slag

våldsamt slag 2968centos txt REG253,0 1150704 428303 /usr/am/våldsamt slag

våldsamt slag 3075centos txt REG253,0 1150704 428303 /usr/am/våldsamt slag

Hur Visa filer Öppnade av en specifik användare

Vi kan också filtrera utdata för att visa filerna som öppnats av en specifik användare. Vi gör detta genom att använda -u -flaggan följt av användarnamnet som:

sudolsof-uhundratals

Detta ger dig en utmatning enligt nedan:

Hur man visar filer som öppnats av en specifik process

Antag att vi vill se alla filer som öppnas av en specifik process? För detta kan vi använda processens PID för att filtrera utmatningen.

Till exempel visar kommandot nedan filerna som öppnats av bash.

sudolsof-s 3075

Detta ger dig bara filerna som öppnats av systemd enligt bilden:

Hur man visar filer som öppnas i en katalog

För att få filerna öppnade i en specifik katalog kan vi skicka alternativet +D följt av katalogsökvägen.

Till exempel, lista öppna filer i katalogen /etc.

sudolsof +D/etc

Nedan är utdata för detta:

Så här visar du nätverksanslutning

Eftersom allt i Linux är en fil kan vi få nätverksfiler som TCP -filer eller anslutningar.

Vi kan använda kommandot:

sudolsof-iTCP

Detta ger dig TCP -anslutningar i systemet.

Du kan också filtrera efter den specifika porten med kommandot som visas nedan:

sudolsof-i:22

Detta ger dig utmatningen enligt nedan:

Hur man kontinuerligt visar filer

Lsof ger oss ett läge att slinga utgången varannan sekund. Detta gör att du kan övervaka filerna som öppnas av en process eller användare kontinuerligt.

Detta alternativ kräver dock att du avslutar processen manuellt.

Till exempel övervakar kommandot nedan kontinuerligt filerna som öppnas på port 22:

sudolsof -r-i:22

Som du kan se, i den tredje slingan, fångar lsof den etablerade anslutningen till servern på SSH.

Slutsats

Lsof är ett otroligt användbart verktyg. Den låter dig övervaka både viktiga filer och övervaka användare och bearbetar öppning av filer. Detta kan vara oerhört användbart vid felsökning eller sökning efter skadliga försök till systemet.

Som visas i den här självstudien kan du med hjälp av olika exempel och metoder kombinera funktionaliteten från lsof -verktyget för anpassad övervakning.

Tack för att du läser och delar! Jag hoppas att du har lärt dig något nytt!