Uvod u Lsof

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.


Tri besplatne upravljačke ploče poslužitelja (brza instalacija)

Tri besplatne upravljačke ploče poslužitelja (brza instalacija)

1. Virtualmin/Webmin Virtualmin je moćna i fleksibilna upravljačka ploča za web hosting za Linux i UNIX sustave temeljena na poznatoj web bazi otvorenog koda

Postavljanje Yii aplikacije na Ubuntu 14.04

Postavljanje Yii aplikacije na Ubuntu 14.04

Yii je PHP okvir koji vam omogućuje brži i lakši razvoj aplikacija. Instalacija Yii-a na Ubuntu je jednostavna, kao što ćete naučiti točno

Upotreba Logrotate za upravljanje datotekama dnevnika

Upotreba Logrotate za upravljanje datotekama dnevnika

Uvod Logrotate je uslužni program za Linux koji pojednostavljuje administraciju datoteka dnevnika. Obično se pokreće jednom dnevno putem cron posla i upravlja bazom dnevnika

Kako instalirati Apache Cassandra 3.11.x na CentOS 7

Kako instalirati Apache Cassandra 3.11.x na CentOS 7

Korištenje drugog sustava? Apache Cassandra je besplatni i otvorenog koda NoSQL sustav upravljanja bazom podataka koji je osmišljen kako bi osigurao skalabilnost, visoku

Kako instalirati MODX Revolution na FreeBSD 11 FAMP VPS

Kako instalirati MODX Revolution na FreeBSD 11 FAMP VPS

Korištenje drugog sustava? MODX Revolution je brz, fleksibilan, skalabilan, open source, Enterprise-grade Content Management System (CMS) napisan u PHP-u. To i

Kako instalirati i konfigurirati ArangoDB na CentOS 7

Kako instalirati i konfigurirati ArangoDB na CentOS 7

Korištenje drugog sustava? Uvod ArangoDB je NoSQL baza podataka otvorenog koda s fleksibilnim modelom podataka za dokumente, grafikone i ključ-vrijednosti. to je

Postavljanje poslužitelja Half Life 2 na CentOS 6

Postavljanje poslužitelja Half Life 2 na CentOS 6

Ovaj vodič će pokriti proces instaliranja poslužitelja za igre Half Life 2 na sustavu CentOS 6. Korak 1: Instaliranje preduvjeta Kako biste postavili ou

Postavljanje Counter Strike: Source na Debianu

Postavljanje Counter Strike: Source na Debianu

U ovom vodiču postavljat ćemo poslužitelj igre Counter Strike: Source na Debianu 7. Ove su naredbe testirane na Debianu 7, ali bi također trebale raditi o

Kako instalirati Unturned 2.2.5 na Debian 8

Kako instalirati Unturned 2.2.5 na Debian 8

U ovom vodiču naučit ćete kako postaviti Unturned 2.2.5 poslužitelj na Vultr VPS s Debianom 8. Napomena: Ovo je uređena verzija Unturneda koja ne

Kako instalirati Harbor na CentOS 7

Kako instalirati Harbor na CentOS 7

Harbor je poslužitelj registra otvorenog koda poslovne klase koji pohranjuje i distribuira Docker slike. Harbor proširuje Docker Distribution otvorenog koda b

Kako instalirati OpenMeetings na CentOS 7

Kako instalirati OpenMeetings na CentOS 7

Korištenje drugog sustava? Apache OpenMeetings je aplikacija za web konferencije otvorenog koda. Napisan je na Javi i podržava više poslužitelja baze podataka. ja

Kako instalirati Cuberite na CentOS 6 ili 7 poslužitelj

Kako instalirati Cuberite na CentOS 6 ili 7 poslužitelj

Uvod Što je kuberit? Cuberite je skalabilna implementacija Minecraft poslužitelja otvorenog koda koja je napisana na C++. Ima plugi koji je jednostavan za korištenje

Kako postaviti trajne aplikacije Node.js na Ubuntu 16.04

Kako postaviti trajne aplikacije Node.js na Ubuntu 16.04

Node.js aplikacije su popularne zbog svoje sposobnosti skaliranja. Pokretanje više istovremenih procesa na više poslužitelja daje manje kašnjenje i duže vrijeme rada

Instalacija Teamspeaka na CentOS 7

Instalacija Teamspeaka na CentOS 7

Teamspeak je VOIP poslužitelj koji se može koristiti za timove/više ljudi za komunikaciju. Relativno je lagan i siguran, budući da se ažuriranja objavljuju

Izrada Jekyll bloga na CentOS 7

Izrada Jekyll bloga na CentOS 7

Korištenje drugog sustava? Jekyll je dobra alternativa WordPressu. Ne zahtijeva nikakve baze podataka i radi s jezikom koji je mnogima poznat

Korištenje datoteke Hosts za testiranje web-mjesta

Korištenje datoteke Hosts za testiranje web-mjesta

Datoteka hosts posebna je datoteka na vašem računalu radne stanice koja će pohraniti informacije o IP-u i imenu. Ova se datoteka provjerava prije DNS-a, pa ako stavite a

Kako instalirati Koel na Fedora 28

Kako instalirati Koel na Fedora 28

Korištenje drugog sustava? Koel je jednostavna web-bazirana osobna aplikacija za strujanje zvuka napisana u Vueu na strani klijenta i Laravel na strani poslužitelja. Koe

Kako instalirati aplikaciju Mailtrain Newsletter na Debian 9

Kako instalirati aplikaciju Mailtrain Newsletter na Debian 9

Korištenje drugog sustava? Mailtrain je aplikacija za bilten otvorenog koda koja se samostalno hostira i izgrađena na Node.js i MySQL/MariaDB. Izvor Mailtrains je na GitHubu. ti

Instaliranje Akauntinga na Fedora 28

Instaliranje Akauntinga na Fedora 28

Korištenje drugog sustava? Akaunting je besplatan računovodstveni softver otvorenog koda i online računovodstveni softver dizajniran za male tvrtke i slobodnjake. Izgrađen je duhovito

Kako instalirati MODX Revolution na CentOS 7 LAMP VPS

Kako instalirati MODX Revolution na CentOS 7 LAMP VPS

Korištenje drugog sustava? MODX Revolution je brz, fleksibilan, skalabilan, besplatan i otvorenog koda, Enterprise-grade Content Management System (CMS) napisan i

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.

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.

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.

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