Az Lsof bemutatása

Linux alatt sok objektum fájlnak számít, függetlenül attól, hogy az objektum valójában fájl, eszköz, könyvtár vagy socket. A fájl listázása egyszerű, ehhez be van építve a shell ls. De mi van akkor, ha a felhasználó látni szeretné, hogy mely fájlokat nyitja meg éppen a webszerver folyamata? Vagy ha a felhasználó meg akarja tudni, hogy egy bizonyos könyvtárban mely fájlok nyílnak meg? Itt lsofjön képbe. Képzeld el, lsofmint a ls"nyitott fájlok" hozzáadásával.

Kérjük, vegye figyelembe, hogy míg a BSD-k más segédprogramokkal rendelkeznek ehhez a feladathoz, fstata Unix számos más íze (például a Solaris) is rendelkezik lsof. A többi platformon eltérnek az opciók és zászlók, valamint a kimenet megjelenése, de általában az ebben a cikkben található ismeretek rájuk is vonatkoznak.

Először is vessünk egy pillantást a lsofkimenet formátumára és annak olvasására. A szokásos lsofparaméterek nélküli kimenet a következőhöz hasonlítana. Ezt az olvashatóság érdekében levágtuk.

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

Ezek az oszlopok a következőket jelentik:

  • COMMAND – Az a folyamat, amelyhez egy megnyitott fájl tartozik, ebben a példában minden a -hoz kapcsolódik init.
  • PID – Az említett folyamat folyamatazonosító száma.
  • FELHASZNÁLÓ – Az a felhasználó, aki alatt a folyamat fut. Mert init, ez szinte mindig root.
  • FD – A fájl fájlleírója, a leggyakoribb:
    • cwd- Az aktuális munkakönyvtár (észreveheti a hasonlóságot pwdaz aktuális munkakönyvtárat kinyomtató paranccsal).
    • rtd - Egy folyamat gyökérkönyvtára.
    • txt- A text file, ez jelenthet a folyamathoz kapcsolódó konfigurációs fájlt vagy a folyamathoz kapcsolódó (vagy ahhoz tartozó) "forráskódot".
    • mem - Egy úgynevezett "memórialeképezett fájl", ami a virtuális memória (értsd: RAM) egy szegmensét jelenti, amely egy fájlhoz van hozzárendelve.
    • Egy szám – a szám a tényleges fájlleírót jelöli, a szám utáni karakter pedig a fájl megnyitásának módja:
    • r - Olvas.
    • w - Ír.
    • u - Olvass és írj.
  • TÍPUS – Megadja a fájl tényleges típusát, a leggyakoribbak a következők:
    • REG - Egy normál fájl.
    • DIR - Egy telefonkönyv.
    • FIFO - Először be, először ki.
  • ESZKÖZ – A fájlt tároló eszköz fő és mellékszáma.
  • MÉRET – A fájl mérete bájtban.
  • NODE – A fájl inode száma.
  • NÉV – A fájl neve.

Ez most egy kicsit nyomasztó lehet, de ha lsofnéhányszor dolgozol vele , gyorsan elmerül az agyadban.

Mint fentebb említettük, a kimenete lsofitt lerövidült. Argumentumok és szűrők nélkül lsoftöbb száz soros kimenetet állít elő, ami csak zavarba ejti.

Két alapvető megközelítés létezik a probléma megoldására:

  • Használjon egy vagy több lsofparancssori lehetőséget az eredmények szűkítéséhez.
  • Vezesse át a kimenetet például: grep.

Bár az utóbbi lehetőség kényelmesebbnek hangzik, mivel nem kell megjegyeznie a lsofparancssori beállításokat, általában nem olyan rugalmas és hatékony, ezért maradunk az elsőnél.

Képzeljük el, hogy a kedvenc szövegszerkesztővel szeretnénk megnyitni egy fájlt, és a szövegszerkesztő azt mondja, hogy csak olvasható módban nyitható meg, mert egy másik program már hozzáfér. lsofsegít kideríteni, ki az elkövető:

lsof /path/to/your/file

Ez a következőhöz hasonló kimenetet eredményez:

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

Úgy tűnik, elfelejtetted bezárni és régebbi munkamenetet! Nagyon hasonló probléma történik, amikor megpróbál leválasztani egy NFS-megosztást, és umountközli, hogy ez nem sikerül, mert valami még mindig hozzáfér a csatlakoztatott mappához. Ismét lsofsegíthet a tettes azonosításában:

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

Figyeld meg a perjelet, ez fontos. Ellenkező esetben lsofazt feltételezi, hogy normál fájlra gondol. Ne tévesszen meg a +zászló előtt - lsofannyi parancssori opciót tartalmaz, amelyekre +a gyakoribbak mellett szüksége van -. A kimenet így nézne ki:

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

Ez azt jelenti, hogy a felhasználóhoz tartozó mocpPID-vel rendelkező folyamat megnyitott egy nevű fájlt . Azonban még a folyamat lezárása után is fennáll egy probléma – az NFS-kötet nem távolítható el.5637musicRMS_GNU_SONG.ogg

lsofvan egy -cjelzője, amely a megnyitott fájlokat tetszőleges folyamatnévvel jeleníti meg.

lsof -c mocp

Ez a következőképpen néz ki kimenetet eredményezne:

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

Ebben a példában van egy másik mocpfutási példány, amely megakadályozza a megosztás leválasztását. A folyamat leállítása után győződjön meg arról, hogy a felhasználónak musicnincs megnyitva más, potenciálisan problémás fájl. lsofvan egy -ujelzője egy adott felhasználó által megnyitott fájlok megjelenítéséhez. Ne feledje, hogy egy fájl nem mindig csak egy normál fájl a merevlemezen!

lsof -u music

Több felhasználót is átadhat, vesszővel elválasztva:

lsof -u music,moremusic

Egy fontos megjegyzés az alapértelmezett viselkedése lsof: az eredmények OR alapú, ami azt jelenti, hogy látni fogja a fájl eredmények megnyitott folyamatok által birtokolt vagy a felhasználó music, vagy a felhasználó moremusic. Ha olyan eredményeket szeretne látni, amelyek mindkét felhasználó tulajdonában lévő folyamatok megegyeznek, akkor át kell adnia a jelzőt -a:

lsof -au music, moremusic

Mivel mindkét felhasználó a csoportban van, a musicusersfájlokat csoport alapján is listázhatja:

lsof -g musicusers

Kombinálhatja a parancssori zászlókat is:

lsof -u music,moremusic -c mocp

or

lsof -u ^music +D /home/Music

Az utolsó sorban hozzáadtunk egy másik speciális jelzőt - ^, amely a logikai NEM-et jelenti . Ha a kimenet üres a parancs futtatása után, akkor a leválasztás nagy valószínűséggel sikeres lesz.

Az előző példákban többnyire normál fájlokat néztünk meg. Mi a helyzet az aljzatokkal és a hálózati csatlakozásokkal?

Az összes jelenlegi hálózati kapcsolat felsorolásához lsofa következő -ijelző van:

lsof -i

A kimenet hasonlít az eddig látottakhoz...

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)

... egy különbséget leszámítva: a fájlnevek vagy könyvtárak helyett az oszlopban NAMEmost már a kapcsolati információk láthatók. Minden csatlakozás a következő részekből áll:

  • Jegyzőkönyv.
  • Helyi gazdagépnév.
  • A kapcsolat forrásportja.
  • Cél DNS-név.
  • Célkikötő.
  • A kapcsolat állapota.

Sok más eszközhöz hasonlóan itt is leiratkozhat a DNS-nevek és -portok ( -nés -P) feloldásáról . A zászló -itovábbi paramétereket vesz fel. Megadhatja, hogy vagy nem mutatnak tcp, udpvagy icmpcsatlakozások vagy bizonyos portok:

lsof -i :25
or
lsof -i :smtp

A paraméterek ismét kombinálhatók. A következő példa...

lsof -i tcp:80

... csak a 80-as portot használó TCP kapcsolatokat jeleníti meg. Kombinálhatja a "klasszikus" fájlokból már ismert opciókkal is:

lsof -a -u httpd -i tcp

Ez megmutatja a felhasználó által megnyitott összes TCP-kapcsolatot httpd. Jegyezze fel a -ajelzőt, amely megváltoztatja a lsof(korábban említett) alapértelmezett viselkedését . Mint a legtöbb parancssori eszköz esetében, itt is nagyon mélyre lehet menni. Az alábbiak csak azokat a TCP-kapcsolatokat jelenítik meg, amelyek állapota "LEÉPTETETT":

lsof -i -s TCP:ESTABLISHED

Ezen a ponton alapvető ismeretekkel kell rendelkeznie a lsofműködésről, valamint néhány általános használati esetről. További olvasnivalókért tekintse lsofmeg a rendszer kézikönyvét .

Hagyj kommentárt

Egyéni Windows ISO létrehozása frissítésekkel az NTLite használatával

Egyéni Windows ISO létrehozása frissítésekkel az NTLite használatával

Ez az oktatóanyag végigvezeti Önt a Vultrs rendszerekkel kompatibilis Windows ISO létrehozásának folyamatán. Itt megtanulhatja az <>Windows ISO<> előállításának lépéseit az NTLite segítségével.

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A mesterséges intelligencia nem a jövőben, hanem itt a jelenben. Ebben a blogban Olvassa el, hogyan hatott a mesterséges intelligencia alkalmazások különböző ágazatokra.

DDOS támadások: Rövid áttekintés

DDOS támadások: Rövid áttekintés

Ön is DDOS támadások áldozata, és tanácstalan a megelőzési módszereket illetően? Olvassa el ezt a cikket a kérdések megoldásához.

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Talán hallottál már arról, hogy a hackerek sok pénzt keresnek, de elgondolkodtál már azon, hogyan kereshetnek ennyi pénzt? beszéljük meg.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

Szeretné látni a Google forradalmi találmányait, és azt, hogy ezek a találmányok hogyan változtatták meg minden mai ember életét? Ezután olvassa el a blogot, és nézze meg a Google találmányait.

Essential péntek: Mi történt az AI-vezérelt autókkal?

Essential péntek: Mi történt az AI-vezérelt autókkal?

Az önvezető autók koncepciója, hogy mesterséges intelligencia segítségével kerüljenek az utakra, már egy ideje álmunk. De számos ígéret ellenére sehol sem látszanak. Olvassa el ezt a blogot, hogy többet megtudjon…

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Ahogy a tudomány gyors ütemben fejlődik, átveszi erőfeszítéseink nagy részét, megnő annak a kockázata is, hogy alávetjük magunkat egy megmagyarázhatatlan szingularitásnak. Olvassa el, mit jelenthet számunkra a szingularitás.

A Big Data Reference Architecture Layerek funkciói

A Big Data Reference Architecture Layerek funkciói

Olvassa el a blogot, hogy a legegyszerűbb módon ismerje meg a Big Data Architecture különböző rétegeit és azok funkcióit.

Az adattárolás fejlődése – Infografika

Az adattárolás fejlődése – Infografika

Az adatok tárolási módjai az Adatok születése óta alakulhatnak. Ez a blog egy infografika alapján mutatja be az adattárolás fejlődését.

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Ebben a digitálisan vezérelt világban az intelligens otthoni eszközök az élet döntő részévé váltak. Íme az intelligens otthoni eszközök néhány elképesztő előnye, hogyan teszik életünket érdemessé és egyszerűbbé.