Uvod u Lsof

Pod Linuxom se mnogi objekti smatraju datotekom, bez obzira na to je li objekt zapravo datoteka, uređaj, direktorij ili utičnica. Navođenje datoteke je jednostavno, za to je ugrađena ljuska ls. Ali što ako korisnik želi vidjeti koje datoteke trenutno otvara proces web poslužitelja? Ili ako je taj korisnik želio saznati koje su datoteke otvorene u određenom direktoriju? Tu lsofdolazi u obzir. Zamislite lsofkao lss dodatkom "otvorenih datoteka".

Imajte na umu da iako BSD-ovi imaju drugačiji uslužni program za ovaj posao fstat, nekoliko drugih tipova Unixa (Solaris, na primjer) također posjeduje lsof. Opcije i zastavice su različite na drugim platformama, kao i izgled izlaza, ali općenito bi znanje iz ovog članka trebalo biti primjenjivo i na njih.

Prvo, pogledajmo format lsofizlaza i kako ga treba čitati. Uobičajeni izlaz lsofbez ikakvih parametara bi ličio na sljedeće. Ovo je skraćeno radi čitljivosti.

COMMAND    PID  TID       USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
init         1            root  cwd       DIR              254,1      4096          2 /
init         1            root  rtd       DIR              254,1      4096          2 /
init         1            root  txt       REG              254,1     36992    7077928 /sbin/init
init         1            root  mem       REG              254,1     14768    7340043 /lib/x86_64-linux-gnu/libdl-2.13.so
init         1            root  mem       REG              254,1   1603600    7340040 /lib/x86_64-linux-gnu/libc-2.13.so
init         1            root  mem       REG              254,1    126232    7340078 /lib/x86_64-linux-gnu/libselinux.so.1
init         1            root  mem       REG              254,1    261184    7340083 /lib/x86_64-linux-gnu/libsepol.so.1
init         1            root  mem       REG              254,1    136936    7340037 /lib/x86_64-linux-gnu/ld-2.13.so
init         1            root   10u     FIFO               0,14       0t0       4781 /run/initctl

Ovi stupci znače sljedeće:

  • NAREDBA - Proces kojem pripada otvorena datoteka, u ovom primjeru sve je povezano s init.
  • PID - identifikacijski broj procesa navedenog procesa.
  • KORISNIK - Korisnik pod kojim se proces izvodi. Jer init, gotovo uvijek je root.
  • FD - Deskriptor datoteke, najčešći je:
    • cwd- Trenutni radni imenik (možda ćete primijetiti sličnost s pwdnaredbom koja ispisuje trenutni radni imenik).
    • rtd - Korijenski direktorij procesa.
    • txt- A text file, to može značiti ili konfiguracijsku datoteku koja se odnosi na proces ili "izvorni kod" koji se odnosi na (ili pripada) procesu.
    • mem - Takozvana "memorija mapirana datoteka", što znači segment virtualne memorije (čitaj: RAM) koji je dodijeljen datoteci.
    • Broj - broj predstavlja stvarni deskriptor datoteke, znak iza broja je način u kojem se datoteka otvara:
    • r - Čitati.
    • w - Napiši.
    • u - Čitati i pisati.
  • TYPE - Određuje stvarnu vrstu datoteke, najčešće su:
    • REG - Običan dosje.
    • DIR - Imenik.
    • FIFO - Prvi ušao, prvi izašao.
  • UREĐAJ - Glavni i sporedni broj uređaja koji drži datoteku.
  • VELIČINA - Veličina datoteke, u bajtovima.
  • ČVOR - Inode broj datoteke.
  • NAME - Naziv datoteke.

Ovo bi za sada moglo biti malo neodoljivo, ali ako radite s njima lsofnekoliko puta, brzo će vam utonuti u mozak.

Kao što je gore spomenuto, izlaz lsofje ovdje skraćen. Bez ikakvih argumenata ili filtara, lsofproizvodi stotine izlaznih linija što će vas samo zbuniti.

Postoje dva osnovna pristupa rješavanju tog problema:

  • Upotrijebite jednu ili više lsofopcija naredbenog retka da suzite rezultate.
  • Provedite izlaz kroz, na primjer, grep.

Iako potonja opcija može zvučati ugodnije budući da nećete morati pamtiti opcije lsofnaredbenog retka, općenito nije tako fleksibilna i učinkovita, pa ćemo se zadržati na prvoj.

Zamislimo da želite otvoriti datoteku svojim omiljenim uređivačem teksta i da vam uređivač teksta kaže da se može otvoriti samo u načinu rada samo za čitanje jer joj drugi program već pristupa. lsofpomoći će vam da saznate tko je počinitelj:

lsof /path/to/your/file

To će proizvesti izlaz sličan ovome:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
vim 2679 root    5w   REG  254,1   121525 6035622 /root/lsof.txt

Očigledno ste zaboravili zatvoriti i stariju sesiju! Vrlo sličan problem se događa kada pokušate demontirati NFS dijeljenje i umountkaže vam da ne može jer nešto još uvijek pristupa montiranoj mapi. Opet, lsofmože vam pomoći u identificiranju krivca:

lsof +D /path/to/your/directory/

Obratite pažnju na zadnju kosu crtu, to je važno. Inače lsofće se pretpostaviti da mislite na običnu datoteku. Neka vas ne zbuni oznaka +ispred - lsofima toliko opcija naredbenog retka da mu je potrebno +uz uobičajenije -. Izlaz bi izgledao ovako:

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
mocp    5637  music    4r   REG   0,19 10147719 102367344 /home/Music/RMS_GNU_SONG.ogg

To znači da je proces mocps PID-om 5637koji pripada korisniku musicotvorio datoteku pod nazivom RMS_GNU_SONG.ogg. Međutim, čak i nakon zatvaranja tog procesa, još uvijek postoji problem - NFS volumen se ne može isključiti.

lsofima -czastavicu koja prikazuje datoteke otvorene proizvoljnog naziva procesa.

lsof -c mocp

To bi proizvelo rezultat koji bi izgledao ovako:

mocp    9383  music    4r   REG   0,19 10147719 102367344 /home/Music/ANOTHER_RMS_GNU_SONG.ogg

U ovom primjeru postoji još jedna instanca mocppokretanja koja vas sprječava da demontirate dijeljenje. Nakon što zatvorite taj proces, želite biti sigurni da korisnik musicnema otvorenih drugih potencijalno problematičnih datoteka. lsofima -uzastavicu za prikaz datoteka koje je otvorio određeni korisnik. Zapamtite, datoteka nije uvijek samo obična datoteka na vašem tvrdom disku!

lsof -u music

Također možete proslijediti nekoliko korisnika, odvojenih zarezima:

lsof -u music,moremusic

Važna napomena na zadanom ponašanju lsof: rezultati su ili based, što znači da ćete vidjeti rezultate datoteka otvaraju procesi koji su u vlasništvu ili korisnika music, ili korisnika moremusic. Ako želite vidjeti rezultate koji se podudaraju s procesima koji su u vlasništvu oba korisnika, tada biste morali proslijediti zastavicu -a:

lsof -au music, moremusic

Budući da su oba korisnika u grupi musicusers, možete i navesti datoteke na temelju grupe:

lsof -g musicusers

Također možete kombinirati zastavice naredbenog retka:

lsof -u music,moremusic -c mocp

or

lsof -u ^music +D /home/Music

U posljednjem retku dodali smo još jednu posebnu zastavicu - ^, što znači logično NE . Ako je izlaz prazan nakon pokretanja te naredbe, tada će demontaža najvjerojatnije biti uspješna.

U prethodnim primjerima uglavnom smo gledali obične datoteke. Što je s utičnicama i mrežnim priključcima?

Za popis svih trenutnih mrežnih veza lsofima -izastavicu:

lsof -i

Rezultat izgleda slično onome što smo do sada vidjeli...

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
owncloud  3509  myuser   25u  IPv4  44946      0t0  TCP strix.local:34217->myserver.vultr.com:https (ESTABLISHED)
firefox   3612  myuser   82u  IPv4  49663      0t0  TCP strix.local:43897->we-in-f100.1e100.net:https (ESTABLISHED)
ssh       3784  myuser    3u  IPv4  10437      0t0  TCP strix.local:51416->someserver.in:ssh (ESTABLISHED)
wget      4140  myuser    3w  IPv4  45586      0t0  TCP strix.local:54460->media.ccc.de:http (CLOSE_WAIT)

... osim jedne razlike: umjesto naziva datoteka ili direktorija, stupac NAMEsada prikazuje informacije o vezi. Svaka veza se sastoji od sljedećih dijelova:

  • Protokol.
  • Lokalno ime hosta.
  • Izvorni port veze.
  • Odredišni DNS naziv.
  • Odredišna luka.
  • Status veze.

Kao i kod mnogih drugih alata, vi svibanj isključiti iz rješavanja DNS imena i luka ( -ni -P, respektivno). Zastava -iuzima dodatne parametre. Možete odrediti hoće li se prikazati ili ne tcp, udpili icmpveze ili određeni portovi:

lsof -i :25
or
lsof -i :smtp

Opet, parametri se mogu kombinirati. Sljedeći primjer...

lsof -i tcp:80

... će vam pokazati samo TCP veze koje koriste port 80. Također ga možete kombinirati s opcijama koje već poznajete iz "klasičnih" datoteka:

lsof -a -u httpd -i tcp

Ovo će vam pokazati sve TCP veze koje je otvorio korisnik httpd. Obratite pažnju na -azastavu koja mijenja zadano ponašanje lsof(kao što je ranije spomenuto). Kao i kod većine alata naredbenog retka, možete ići iznimno duboko. Sljedeće će vam pokazati samo TCP veze čije je stanje "USTABLISHED":

lsof -i -s TCP:ESTABLISHED

U ovom trenutku trebali biste imati osnovno razumijevanje o tome kako lsoffunkcionira, zajedno s nekim uobičajenim slučajevima upotrebe. Za daljnje čitanje, pogledajte stranicu s priručnikom lsofna vašem sustavu.

Ostavite komentar

Uspon strojeva: primjene AI u stvarnom svijetu

Uspon strojeva: primjene AI u stvarnom svijetu

Umjetna inteligencija nije u budućnosti, ovdje je upravo u sadašnjosti. U ovom blogu Pročitajte kako su aplikacije umjetne inteligencije utjecale na različite sektore.

DDOS napadi: kratak pregled

DDOS napadi: kratak pregled

Jeste li i vi žrtva DDOS napada i zbunjeni ste metodama prevencije? Pročitajte ovaj članak kako biste riješili svoje upite.

Jeste li se ikada zapitali kako hakeri zarađuju novac?

Jeste li se ikada zapitali kako hakeri zarađuju novac?

Možda ste čuli da hakeri zarađuju mnogo novca, ali jeste li se ikada zapitali kako zarađuju toliki novac? raspravimo.

Revolucionarni Googleovi izumi koji će vam olakšati život.

Revolucionarni Googleovi izumi koji će vam olakšati život.

Želite li vidjeti revolucionarne izume Googlea i kako su ti izumi promijenili život svakog čovjeka danas? Zatim čitajte na blogu kako biste vidjeli Googleove izume.

Friday Essential: Što se dogodilo s automobilima s umjetnom inteligencijom?

Friday Essential: Što se dogodilo s automobilima s umjetnom inteligencijom?

Koncept samovozećih automobila koji će krenuti na ceste uz pomoć umjetne inteligencije san je koji već neko vrijeme imamo. No, unatoč nekoliko obećanja, nigdje ih nema. Pročitajte ovaj blog kako biste saznali više…

Tehnološka singularnost: daleka budućnost ljudske civilizacije?

Tehnološka singularnost: daleka budućnost ljudske civilizacije?

Kako se znanost razvija velikom brzinom, preuzimajući mnoge naše napore, raste i rizik da se podvrgnemo neobjašnjivoj Singularnosti. Pročitajte što bi za nas mogla značiti singularnost.

Funkcionalnosti slojeva referentne arhitekture velikih podataka

Funkcionalnosti slojeva referentne arhitekture velikih podataka

Pročitajte blog kako biste na najjednostavniji način upoznali različite slojeve u arhitekturi velikih podataka i njihove funkcionalnosti.

Evolucija pohrane podataka – Infografika

Evolucija pohrane podataka – Infografika

Metode pohrane podataka su se razvijale možda od rođenja podataka. Ovaj blog pokriva evoluciju pohrane podataka na temelju infografike.

6 nevjerojatnih prednosti posjedovanja pametnih kućnih uređaja u našim životima

6 nevjerojatnih prednosti posjedovanja pametnih kućnih uređaja u našim životima

U ovom digitalnom svijetu, pametni kućni uređaji postali su ključni dio života. Evo nekoliko nevjerojatnih prednosti pametnih kućnih uređaja o tome kako naš život čine vrijednim življenja i jednostavnijim.

Ažuriranje dodataka macOS Catalina 10.15.4 uzrokuje više problema nego što ih rješava

Ažuriranje dodataka macOS Catalina 10.15.4 uzrokuje više problema nego što ih rješava

Nedavno je Apple izdao macOS Catalina 10.15.4 dodatak ažuriranju kako bi riješio probleme, ali čini se da ažuriranje uzrokuje više problema koji dovode do zalijevanja mac strojeva. Pročitajte ovaj članak da biste saznali više