Hvordan sjekke åpne filer i Linux

Hvordan sjekke åpne filer i Linux

Du har kanskje kommet over ordtaket: "Alt er en fil i Linux.”Selv om dette ikke er helt sant, holder det et sett med sannheter til det.

I Linux og Unix-lignende systemer er alt som en fil. Det betyr at ressursene i UNIX -systemet får tildelt en filbeskrivelse, inkludert lagringsenheter, nettverksstikk, prosesser osv.

En filbeskrivelse er et unikt nummer som identifiserer en fil og andre input/output -enheter. Den beskriver ressurser og hvordan kjernen får tilgang til dem. Tenk på det som en inngangsport til Kernel Abstraksjonsmaskinvareressursene.

Dessverre er konseptet med filbeskrivelser utenfor omfanget av denne opplæringen; Tenk på lenken nedenfor for å komme i gang med å lære mer:

https: // no.Wikipedia.org/wiki/file_descriptor

Det betyr at UNIX og UNIX-lignende systemer som Linux bruker slike filer tungt. Som Linux Power -bruker er det utrolig nyttig å se de åpne filene og prosessene og brukerne som bruker dem.

Denne opplæringen vil fokusere på måter å se filene åpne og hvilken prosess eller bruker som er ansvarlig.

Forutsetninger

Før vi begynner, må du forsikre deg om at du har:

  • Et Linux -system
  • Bruker med rot- eller sudo -privilegier

Hvis du har disse, la oss komme i gang:

LSOF -verktøyet

Opprettet av Victor A Abell, List Open Files eller LSOF for Short, er et kommandolinjeverktøy som lar oss se de åpne filene og prosessene eller brukerne som åpnet dem.

LSOF -verktøyet er tilgjengelig i større Linux -distribusjoner; Imidlertid kan du finne den ikke installert, og det kan hende du trenger å installere manuelt.

Hvordan installere LSOF på Debian/Ubuntu

For å installere den på Debian, bruk kommandoen:

sudo apt-get oppdatering
sudo apt -get install lsof -y

Hvordan installere på rehl/centos

For å installere på Rehl og Centos, bruk kommandoen:

Sudo DNF -oppdatering
sudo dnf installer lsof

Hvordan installere på Arch

På Arch, ring pakkeansvarlig ved å bruke kommandoen:

sudo pacman -y
sudo pacman -s lsof

Hvordan installere på Fedora

Bruk kommandoen på Fedora:

sudo yum install lsof

Når du har installert og oppdatert LSOF -verktøyet, kan vi begynne å bruke det.

Grunnleggende LSOF -bruk

For å bruke LSOF -verktøyet, skriv inn kommandoen:

sudo lsof

Når du har utført kommandoen ovenfor, vil LSOF dumpe mye informasjon som vist nedenfor:

Ovennevnte utgang viser alle filene som er åpnet av prosessene. Utgangen har forskjellige kolonner, som hver representerer spesifikk informasjon om filen.

  • Kommandokolonnen - viser navnet på prosessen som bruker filen.
  • PID - viser prosessidentifikatoren for prosessen ved hjelp av filen.
  • Tid - Viser oppgavens ID (tråder) av prosessen.
  • TaskCmd - Representere navnet på oppgavekommandoen.
  • BRUKER - Eieren av prosessen.
  • Fd - Viser filbeskrivelsesnummeret. Slik bruker prosesser filen; Alternativene som er tilgjengelige i denne kolonneutgangen inkluderer:
  • CWD - Gjeldende arbeidskatalog.
  • mem - Memory-Mapped File
  • PD - Foreldrekatalog
  • Jld - Fengselskatalog
  • LTX - delt bibliotekstekst
  • rtd - rotkatalogen.
  • tekst - Programkode og data
  • tr - Kernel -sporingsfil.
  • feil - Filbeskrivelsesinformasjonsfeil
  • MMP - Memory-Mapped Device.
  • TYPE - Viser typen node tilknyttet filen, for eksempel:
  • Unix - for UNIX -domenetoksning.
  • Dir - representerer katalogen
  • Reg - som representerer den vanlige filen
  • Chr - representerer spesialkarakterfilen.
  • Lenke - symbolsk lenkefil
  • Blk - Blokkerer spesiell fil
  • Inet - Internett -domeneuttak
  • Fifo - et navngitt rør (først i første utfil)
  • RØR - for rør

Og mange flere.

  • Enheter - Viser enhetsnumrene atskilt med komma i rekkefølgen av spesialfil, blokkerer spesial-, vanlige, katalog- og NFS -fil.
  • Størrelse/av - viser størrelsen på filen PR -filen forskjøvet i byte.
  • Node - viser nodenummeret til den lokale filen, skriv inn Internett -protokolltype osv.
  • NAVN - viser navnet på monteringspunktet og FS som filen er lokalisert.

Merk: Se LSOF -manualen for detaljert informasjon om kolonnene.

Hvordan vise prosesser som åpnet en fil

LSOF gir oss alternativer som hjelper oss å filtrere utdataene for å vise bare prosessene som åpnet en spesifikk fil.

For eksempel, for å se filen som åpnet filen /bin /bash, bruk kommandoen som:

sudo lsof /bin /bash

Dette vil gi deg en utdata som vist nedenfor:

Kommando PID -bruker FD Type enhetsstørrelse/Off Node Navn
KSMTuned 1025 Root Txt Reg 253,0 1150704 428303/usr/bin/bash
Bash 2968 Centos TXT REG 253,0 1150704 428303/usr/bin/bash
BASH 3075 Centos TXT REG 253,0 1150704 428303/usr/bin/bash

Hvordan showfiler åpnet av en bestemt bruker

Vi kan også filtrere utgangen for å vise filene som er åpnet av en bestemt bruker. Vi gjør dette ved å bruke -u -flagget etterfulgt av brukernavnet som:

sudo lsof -u centos

Dette vil gi deg en utdata som vist nedenfor:

Hvordan vise filer åpnet av en spesifikk prosess

Anta at vi vil se alle filene som er åpnet av en spesifikk prosess? For dette kan vi bruke PID i prosessen for å filtrere utgangen.

For eksempel viser kommandoen nedenfor at filene åpnet av bash.

sudo lsof -p 3075

Dette vil gi deg bare filene som er åpnet av SystemD som vist:

Hvordan vise filer som er åpnet i en katalog

For å få filene åpnet i en spesifikk katalog, kan vi passere +D -alternativet etterfulgt av katalogstien.

Liste for eksempel åpne filer i /etc -katalogen.

sudo lsof +d /etc

Nedenfor er utgangen for dette:

Hvordan vise nettverkstilkobling

Siden alt i Linux er en fil, kan vi få nettverksfilene som TCP -filer eller tilkoblinger.

Vi kan bruke kommandoen:

sudo lsof -i tcp

Dette vil gi deg TCP -tilkoblinger i systemet.

Du kan også filtrere ved den spesifikke porten ved å bruke kommandoen vist nedenfor:

sudo lsof -i: 22

Dette vil gi deg utdataene som vist nedenfor:

Hvordan man kontinuerlig viser filer

LSOF gir oss en modus for å sløyfe utgangen med noen få sekunder. Dette lar deg overvåke filene som åpnes av en prosess eller bruker kontinuerlig.

Dette alternativet krever imidlertid at du avslutter prosessen manuelt.

For eksempel overvåker kommandoen nedenfor kontinuerlig filene som ble åpnet på port 22:

sudo lsof -r -i: 22

Som du kan se, fanger LSOF i den tredje sløyfen den etablerte forbindelsen til serveren på SSH.

Konklusjon

LSOF er et utrolig nyttig verktøy. Det lar deg overvåke for kritiske filer, samt overvåke brukere og prosesser som åpner filer. Dette kan være utrolig nyttig når du feilsøker eller leter etter ondsinnede forsøk på systemet.

Som vist i denne opplæringen, ved hjelp av forskjellige eksempler og metoder, kan du kombinere funksjonaliteten levert av LSOF -verktøyet for tilpasset overvåking.

Takk for at du leste og deling! Jeg håper du lærte noe nytt!