Hur man Använder Linux lsof Kommandot

0
375
Fatmawati Achmad Zaenuri/Shutterstock.kom

Om allt i Linux är en fil, det måste finnas mer till det än bara filer på din hårddisk. Denna handledning kommer att visa dig hur du använder lsof för att se alla andra enheter och processer som hanteras som filer.

På Linux, Allt Är en Fil

Den ofta citerade frasen att allt i Linux är en fil som är typ sanna. En fil är en samling av byte. När de håller på att läsa in ett program eller skickas till en skrivare visas de för att generera en ström av bytes. När de skrivs till, de accepterar en ström av bytes.

Många andra system komponenter acceptera eller skapa strömmar av bytes, såsom tangentbord, socket-anslutningar, skrivare och kommunikation-processer. Eftersom de antingen acceptera, generera, eller acceptera och generera byte-strömmar, dessa enheter kan hanteras—på en mycket låg nivå—som om de vore filer.

Detta designkoncept förenklad implementering av Unix-operativsystemet. Det innebar att en liten uppsättning av handlers, verktyg och Api: er kan vara skapade för att hantera ett brett sortiment av olika resurser.

Data och program som finns på din hårddisk är vanliga gamla filsystemet filer. Vi kan använda ls för att lista dem och ta reda på några detaljer om dem.

Hur får vi reda på om alla andra processer och enheter som behandlas som om de vore filer? Vi använder lsof-kommandot. Här visas en lista över öppna filer i systemet. Det är det listor något som hanteras som om det vore en fil.

RELATERAT: Vad Betyder “Allt Är en Fil” Betyder i Linux?

Lsof-Kommandot

Många av de processer eller enheter som lsof kan rapportera om tillhör root eller lanserades av root, så du kommer att behöva använda kommandot sudo med lsof.

Och eftersom denna lista kommer att bli mycket lång, kommer vi att röret igenom det mindre .

sudo lsof | mindre

Innan lsof-utgång verkar GNOME-användare kan se ett varningsmeddelande i terminalfönstret.

lsof: VARNING: kan inte stat () – säkring.gvfsd-fuse-filsystemet /run/user/1000/vim
Produktionen informationen kan vara ofullständig.

lsof försöker bearbeta alla monterade filsystem. Detta varningsmeddelande upp eftersom lsof har stött på ett GNOME Virtual file system (VIM). Detta är ett specialfall av ett filsystem i användarrymden (SÄKRING). Det fungerar som en bro mellan GNOME och dess Api: er och kärnan. Ingen—inte ens root—kan få ett av dessa system filen, bortsett från de ägare som monterade det (i det här fallet, GNOME). Du kan ignorera denna varning.

Utdata från lsof är mycket brett. De vänstra kolumnerna är:

De högra kolumnerna är:

Lsof Kolumner

Alla kolumner inte gäller för varje typ av fil som är öppen. Det är normalt för en del av dem att vara tom.

  • Kommando: namnet på kommandot som är förknippade med den process som öppnade filen.
  • PID: Process-id för den process som öppnade filen.
  • TID: Uppgift (tråd) identifieringsnummer. En tom kolumn innebär att det inte är en uppgift; det är en process.
  • Användare: användar-ID eller namn på den användare som processen tillhör, eller användar-ID eller logga in för den person som äger katalogen /proc där lsof finner information om processen.
  • FD: Visar filens beskrivning av filen. Filhandtag beskrivs nedan.
  • Typ: typ av nod som är associerat med filen. Observera typer beskrivs nedan.
  • Enhet: Innehåller antingen enheten siffror, åtskilda med kommatecken, för en karaktär speciell, block speciellt, vanlig, katalog eller NFS-fil, eller en kärna referens adress som identifierar filen. Det kan också visa basen adress eller enhet namn på en Linux-AX.25 socket-enhet.
  • Storlek/Off: Visar storleken av filen eller om filen offset i byte.
  • Nod: Visar nod nummer av en lokal fil, eller inode nummer av en NFS-fil på servern, eller internet-protokolltyp. Det kan visa STR för en ström eller IRQ eller inode nummer av en Linux-AX.25 socket-enhet.
  • Namn: Visar namnet på monteringspunkten och filsystemet där filen finns.

FD Kolumn

Filen deskriptor i FD kolumnen kan vara ett av många alternativ på sidan man lista dem alla.

FD kolumn inlägg kan bestå av tre delar: en fil deskriptor, ett läge karaktär, och ett lås karaktär. Några vanliga filhandtag är:

  • cwd: Nuvarande katalog.
  • err: FD information error (se kolumnen NAMN).
  • ltx: Delat bibliotek text (kod och data).
  • m86: DOS Samman mappade filen.
  • mem: minnesmappad fil.
  • mmap: Minnes-mappad enhet.
  • pd: Överordnade katalogen.
  • rtd: rotkatalogen.
  • txt: Program text (kod och data)
  • En siffra som representerar en fil deskriptor.

Läge karaktär kan vara en av följande:

  • r: Läs fi.
  • w: skrivrättigheter.
  • u: Läs-och skrivrättigheter.
  • ”: Ett mellanslag, om läget är okänt och det finns inga lås karaktär.
  • –: Läge okända och det är ett lås karaktär.

Låset karaktär kan vara en av:

  • r: Läs lås på en del av filen.
  • R: Läs lås på hela filen.
  • w: Skriva lås på en del av filen.
  • W: Skriva lås på hela filen.
  • u: Läsa och skriva låsa i valfri längd.
  • U: Okänd lock typ.
  • ”: Ett mellanslag. Utan lås.

Kolumnen TYP

Det finns över 70 poster som kan visas i kolumnen TYP. Några vanliga poster du kommer att se är:

  • REG: Vanliga filsystem fil.
  • DIR: Katalog.
  • FIFO: först In, Först Ut.
  • CHR: Karaktär speciell fil.
  • BLK: Block speciell fil.
  • INET: Internet uttaget.
  • unix: UNIX-domänen uttag

Se Processer Som Har Öppnat en Fil

För att se de processer som har öppnat en viss fil, ange namnet på den fil som parameter till lsof. Till exempel, för att se de processer som har öppnat kern.logga fil, använd detta kommando:

sudo lsof /var/log/kern.logga in

lsof svarar genom att visa den inre processen, rsyslogd som startades av användaren syslog.

Se Alla Filer som Öppnas från en Katalog

För att se de filer som har öppnats från en katalog, och de processer som öppnade dem, skicka katalogen till lsof som en parameter. Du måste använda +D (katalog) alternativ.

För att se alla filer som är öppna i /var/log/ katalog, använd detta kommando:

sudo lsof +D /var/log/

lsof svarar med en lista över alla öppna filer i den katalogen.

För att se alla filer som har öppnats från katalogen /home, använd följande kommando:

sudo lsof +D /hem

Filer som har öppnats från katalogen /home visas. Observera att med kortare beskrivningar i vissa kolumner, hela notering är smalare.

Lista Filer som Öppnats Av en Process

För att se de filer som har öppnats av en viss process, använd-c (kommando) alternativet. Observera att du kan ge mer än en sökterm för att lsof på en gång.

sudo lsof -c ssh -c init

lsof är en lista över filer som har öppnats av någon av de processer som anges på kommandoraden.

Se Filer Öppnas Av en Användare

För att begränsa visningen till de filer som har öppnats av en specifik användare kan använda -u (user) alternativ. I detta exempel kommer vi att titta på de filer som har öppnats av processer som ägs eller lanseras på uppdrag av Maria.

sudo lsof -u maria

Alla filer finns med har öppnats på uppdrag av användaren, Maria. Detta inkluderar filer som har öppnats av desktop-miljö, till exempel, eller helt enkelt som ett resultat av Mary har loggat in.

Exklusive Filer Öppnas av en Användare

För att utesluta filer som har öppnats av en användare, använd ^ operatör. Exklusive användare från listan gör det lättare att hitta den information du är intresserad av. Du måste använda väljaren-u som innan, och lägg ^ karaktär till början av användarens namn.

sudo lsof +D /hem -u ^mary

Denna gången lista för /home-katalogen innefattar inte någon av de filer som har öppnats av användaren Maria.

Lista Filer som Öppnats av en Process

För att lista filer som har öppnats av en specifik process, använd -p (process) och ge process-ID som parameter.

sudo lsof – p 4610

Alla filer som har öppnats av process-ID som du tillhandahåller är listat för dig.

Notering Process-Id Som Har Öppnat en Fil

För att se den process Id: n för de processer som har öppnat en viss fil, använd -t – (bryskt) – alternativet och ange namnet på den fil på kommandoraden.

sudo lsof -t /usr/share/mime/mime.cache

Den process-Id som visas i en enkel lista.

Använd och-OCH ELLER-Sökningar

Låt oss lista över de filer som har öppnats av användaren Maria, som är relaterade till SSH-processer. Vi vet att vi kan ge mer än en sökning artikel på kommandoraden, så det borde vara enkelt.

sudo lsof -u mary -c ssh

Låt oss nu titta på utdata från lsof. Som inte ser bra ut, det finns poster i produktionen som startades av root.

Det är inte vad vi förväntade oss. Vad hände?

När du lämnar in flera sökord lsof kommer tillbaka någon fil som matchar det första sökordet eller den andra sökord, och så vidare. Med andra ord, det fungerar en ELLER-sökning.

För att göra lsof utföra en OCH-sökning, använder du det -ett (och) option. Detta innebär att endast filer som listas kommer att vara de som matchar det första sökordet, och den andra sökord, och så vidare.

Låt oss försöka igen och använda -ett-alternativ.

sudo lsof -u mary -c ssh -en

Nu varje fil i listan är en som har öppnats av eller på uppdrag av Maria, och är associerade med SSH kommandot.

Automatiskt Uppfriskande Displayen

Vi kan använda +|-r (upprepa) möjlighet att sätta lsof-i upprepningsläget. Alternativet upprepa kan användas på två sätt, antingen +r -r. Vi måste också lägga till det antal sekunder vi vill lsof att vänta innan uppfriskande displayen.

Med hjälp av alternativet upprepa i antingen formatet gör lsof visa de resultat som vanligt, men det tillför en streckad linje botten av skärmen. Den väntar på det antal sekunder som anges på kommandoraden och sedan uppdaterar displayen med en ny uppsättning av resultaten.

Med flaggan-r detta kommer att fortsätta tills du trycker på Ctrl+C. Med +r-format, det kommer att fortsätta tills det finns inga resultat att visa, eller tills du trycker på Ctrl+C.

sudo lsof -u mary -c ssh -a-r5

Observera att den streckade linjen i botten av listan. Detta separerar varje ny visning av data när produktionen är utvilad.

Visa Filer som är Associerade med Internet-Anslutningar

-Jag (internet) alternativet tillåter dig att se de filer som öppnats av processer som är förknippade med nätverks-och internet-anslutningar.

lsof -i

Alla filer som öppnats av nätverks-och internet-anslutningar visas.

Visa Filer som är Associerade med Internet-Anslutningar med Process-ID

För att se de filer som öppnats av internet-anslutningar som är associerad med en specifik process-ID, lägga till alternativet-p och -ett alternativ.

Här letar vi efter filer som öppnats av en internet-eller nätanslutning, genom en process med ett ID på 606.

sudo lsof -i-a-s 606

Alla filer som öppnats av process-ID 606 som är associerade med internet eller nätverksanslutningar visas.

Visa Filer som är Associerade med Internet-Anslutningar och Kommandon

Vi kan använda-c (kommando) alternativet för att leta efter filer som öppnats av processer. Leta efter filer som har öppnats av internet eller nätverksanslutningar i samband med ssh-processen, använder du följande kommando:

lsof -i-a-c ssh

Alla filer som öppnas på grund av ssh processer som anges i produktionen.

Visa Filer som är Associerade med Internet-Anslutningar och Portar

Vi kan göra lsof rapport om de filer som har öppnats av internet eller ett nätverk anslutningar på en viss port. För att göra detta använder vi : tecken följt av portnummer.

Här frågar vi lsof för att lista filer som har öppnats av nätverket eller internet med hjälp av port 22.

lsof -i :22

Alla listade filer som öppnats av processer som är förknippade med port 22 (vilket är standard port för SSH-anslutningar).

Visa Filer som är Associerade med Internet-Anslutningar och Protokoll

Vi kan be lsof för att visa de filer som har öppnats av processer som är förknippade med nätverks-och internet-anslutningar som använder ett särskilt protokoll. Vi kan välja mellan TCP, UDP, SMTP. Låt oss använda sig av TCP-protokollet och se vad vi får.

sudo lsof -i tcp

Det är bara filer som är listade är de som öppnats av processer som använder sig av TCP-protokollet.

Vi har Bara Skrapat på Ytan

Det är en bra grund i några vanliga användningsfall för lsof, men det finns mycket mer än så. Hur mycket mer kan bedömas av det faktum sidan man är över 2 800 rader lång.

Lsof-kommando kan användas för att borra allt djupare in i strata av öppna filer och pseudo-filer. Vi har tillhandahållit en skiss över; atlas finns i man-sidan.

LÄS NÄSTA

  • “Vad är en “Qi-Certifierade Trådlösa Laddaren?
  • “Hur iOS 13 Kommer att Låsa upp NFC Potential
  • “Hur att Sluta att Chrome (eller Kant) Från att Ta Över Din mediaknappar
  • “Hur att Anpassa den Nya Windows Terminal App
  • “6 Stora Funktioner i Windows 10 Nya Spel Bar