Linux-kommandoer

Linux lsof Command

Linux lsof Command
Kommandoverktøyet “lsof” i Linux er et av de mange innebygde verktøyene som er veldig nyttige for å sjekke ut “listen over åpne filer”. Ja, begrepet "lsof" er forkortelsen for oppgaven.

Det er en rekke prosesser som kjører i systemet hele tiden, og får tilgang til forskjellige filer i systemet. Disse filene kan være diskfiler, skript, nettverkskontakter, enheter, navngitte rør og andre. Ved å bruke “lsof” er det mulig å utføre mange ting, for eksempel feilsøking. Det er også ganske nyttig for systemadministratorer å finne ut hvilke filer som får tilgang til ved hvilke prosesser. En av de mest nyttige scenariene jeg har funnet er når du er i ferd med å demontere et filsystem, men det fortsatt er tilgjengelig.

Uten videre, la oss komme i gang med “lsof”! Jeg antar at det nåværende UNIX / Linux-systemet ditt allerede har "lsof" installert.

plassering

som lsof

Dette rapporterer hele banen til kommandoen, i dette tilfellet "lsof".

“Lsof” versjon
lsof -v

Dette vil rapportere detaljert versjonsinformasjon om “lsof”, inkludert byggedato for binær, kompilatorversjon, kompilatorflagg og andre.

Grunnleggende “lsof” bruk

Kjør “lsof” av seg selv.

lsof

Dette rapporterer en STOR liste over alle filene som systemet får tilgang til når kommandoen kjøres.

Mens alle feltene er selvforklarende, kan du for det meste bli forvirret av kolonnene "FD" og "TYPE" og deres verdier. La oss sjekke dem ut.

FD: Forkortelse av "File Descriptor". Det kommer opp med følgende verdier.

Det er også andre verdier du vil legge merke til i kolonnen, som "1u" etterfulgt av u, r, w, etc. verdi. Hva betyr det??

TYPE: Beskriver filtypen og dens identifikasjon. Verdiene er som følger.

Brukerspesifikke åpnede filer

Linux er en strålende flerbrukerplattform. Flere brukere kan få tilgang til systemet samtidig og utføre operasjoner som de har tillatelse til.

For å sjekke ut filene som en bestemt bruker bruker, kjører du følgende kommando.

lsof -u

For å sjekke ut brukerne med høyere rangering, trenger "lsof" imidlertid "superbruker" -rettighet.

sudo lsof -u

Hva med å sjekke ut alle kommandoene og filene en bestemt bruker får tilgang til? Kjør følgende.

lsof -i -u

Igjen, for brukere med høyere rangering, trenger “lsof” privilegiet “superbruker”.

sudo lsof -i -u

Havnespesifikke kjører prosesser

For å finne ut alle prosessene som for øyeblikket bruker en bestemt port, ring “lsof” med “-i” -flagget etterfulgt av protokollen og portinformasjonen.

lsof -i<46><@hostname|host_address>
:

For eksempel, for å sjekke ut alle programmene som for øyeblikket har tilgang til port 80 via TCP / IP-protokoll, kjør følgende kommando.

lsof -i TCP: 80

Denne metoden kan også brukes til å vise alle prosessene som bruker porter innenfor et bestemt område, for eksempel 1 til 1000. Kommandostrukturen ligner på før med litt magi ved portnummerdelen.

lsof -i TCP: 1-1000

Protokollspesifikke prosesser

Her er to eksempler som viser prosessene som for øyeblikket bruker IPv4- og IPv6-protokollene.

lsof -i 4

lsof -i 6

Oppføring av nettverkstilkoblinger

Følgende kommando vil rapportere alle nettverkstilkoblingene fra det nåværende systemet.

lsof -i

Unntatt med ^

Ja, vi kan ekskludere spesifikk bruker, port, FD og andre ved hjelp av tegnet “^”. Alt du trenger å gjøre er å bruke den med forsiktighet, slik at du ikke ødelegger hele utdataene.

I dette eksemplet, la oss ekskludere alle prosessene fra brukeren "root".

lsof -u ^ rot

Det er andre måter å bruke denne ekskluderende mekanismen med "lsof", for eksempel med flaggene som "-c", "-d" osv. Ikke alle flagg støtter denne mekanismen. Derfor anbefaler jeg å prøve en demo med denne metoden med hvilket som helst flagg før du implementerer den i noen skript.

PID-søk

PID er en viktig egenskap for enhver prosess som kjører på systemet. Det gjør det mulig å finne bedre til en bestemt prosess. Prosessnavnet er ikke veldig nyttig i mange situasjoner, da den samme binæren kan lage kopier av seg selv og utføre forskjellige oppgaver parallelt.

Hvis du ikke vet hvordan du får PID for en prosess, er det bare å bruke “ps” for å liste opp alle prosessene som kjører og filtrere utdataene ved hjelp av “grep” med prosessnavnet og / eller kommandoene.

ps -A

Nå, utfør filtreringen ved hjelp av "grep".

ps -A | grep

Nå, sjekk ut hvilke filer som PID får tilgang til.

lsof -p

Oppføring av åpne filer for en bestemt enhet

Funksjonaliteten til “lsof” er ikke bare begrenset til disse funksjonene. Du kan også filtrere resultatet av “lsof” etter enhetsbasis. For dette formålet vil kommandoen se ut som dette.

lsof

Denne kommandoen er veldig nyttig for å finne ut alle kjørende prosesser med eierinformasjonen som får tilgang til et bestemt filsystem. Hvis du har problemer med å demontere et filsystem, er dette den beste måten å gå.

lsof

Liste åpne filer under en katalog

I likhet med forrige eksempel, bare send katalogbanen til “lsof” for å finne ut om noen prosess har tilgang til den.

Merk: “lsof” vil sjekke katalogen rekursivt, så det kan ta tid.

= lsof + D

Bonus: avslutt all brukeraktivitet

Vær ekstremt forsiktig med denne delen, da den ganske enkelt kan rote med alt en bruker gjør. Følgende kommando vil drepe alle kjørende prosesser til en bruker.

sudo kill -9 'lsof -t -u Siste tanker

Funksjonene i “lsof” stopper ikke bare her. De som er nevnt her er de som vi trenger mest på daglig basis. Det er mange andre funksjoner av "lsof" som kan komme til nytte (i spesifikke tilfeller, selvfølgelig).

For alle tilgjengelige funksjoner og bruken av dem, sjekk ut mann- og infosidene til “lsof”.

mann lsof

info lsof

lsof -?

Nyt!

Topp 10 spill å spille på Ubuntu
Windows-plattformen har vært en av de dominerende plattformene for spill på grunn av den enorme andelen spill som utvikles i dag for å støtte Windows ...
5 beste arkadespill for Linux
I dag er datamaskiner seriøse maskiner som brukes til spill. Hvis du ikke kan få den nye høye poengsummen, vil du vite hva jeg mener. I dette innlegge...
Kamp for Wesnoth 1.1. 3.6 Utvikling utgitt
Kamp for Wesnoth 1.1. 3.6 utgitt i forrige måned, er den sjette utgivelsen i 1.1. 3.x-serien, og den leverer en rekke forbedringer, spesielt til bruke...