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 .


Leave a Comment

Telepítse a Plesket a CentOS 7 rendszeren

Telepítse a Plesket a CentOS 7 rendszeren

Más rendszert használ? A Plesk egy szabadalmaztatott webtárhely-vezérlőpult, amely lehetővé teszi a felhasználók számára, hogy adminisztrálják személyes és/vagy ügyfeleik webhelyeit, adatbázisait

A Cacti beállítása a Debian Jessie-n

A Cacti beállítása a Debian Jessie-n

Bevezetés A Cacti egy nyílt forráskódú megfigyelő és grafikus eszköz, amely teljes mértékben az RRD adatokon alapul. A Cactuson keresztül szinte bármilyen típusú eszközt felügyelhet

Telepítse a Lets Encrypt SSL-t az egykattintásos WordPress alkalmazásban

Telepítse a Lets Encrypt SSL-t az egykattintásos WordPress alkalmazásban

Bevezetés A Lets Encrypt egy hitelesítésszolgáltató szolgáltatás, amely ingyenes TLS/SSL-tanúsítványokat kínál. A telepítés folyamatát a Certbot leegyszerűsíti,

Tekkit Classic kiszolgáló beállítása Ubuntu 16.10 rendszeren

Tekkit Classic kiszolgáló beállítása Ubuntu 16.10 rendszeren

Más rendszert használ? Mi az a Tekkit Classic? A Tekkit Classic egy modpack ahhoz a játékhoz, amelyet mindenki ismer és szeret; Minecraft. Tartalmaz néhányat a ver

Az iRedMail beállítása a Debian Wheezy rendszeren

Az iRedMail beállítása a Debian Wheezy rendszeren

Más rendszert használ? Ez az oktatóanyag megmutatja, hogyan telepítheti a csoportmunka iRedMail programot a Debian Wheezy friss telepítésére. Használnia kell egy szervát

Jekyll blog létrehozása Ubuntu 16.04-en

Jekyll blog létrehozása Ubuntu 16.04-en

Más rendszert használ? A Jekyll nagyszerű alternatíva a WordPress helyett blogíráshoz vagy tartalommegosztáshoz. Nem igényel adatbázist, és nagyon egyszerű i

Felügyelet nélküli frissítések beállítása Debian 9-en (Stretch)

Felügyelet nélküli frissítések beállítása Debian 9-en (Stretch)

Más rendszert használ? Ha Debian szervert vásárol, akkor mindig rendelkeznie kell a legújabb biztonsági javításokkal és frissítésekkel, akár alszik, akár nem

A PHP 7.0 vagy PHP 7.1 telepítése és konfigurálása Ubuntu 16.04 rendszeren

A PHP 7.0 vagy PHP 7.1 telepítése és konfigurálása Ubuntu 16.04 rendszeren

A PHP és a kapcsolódó csomagok a leggyakrabban használt összetevők a webszerverek telepítésekor. Ebben a cikkben megtudjuk, hogyan kell beállítani a PHP 7.0 vagy PHP 7.1 o verzióját

A Squid Proxy telepítése a CentOS rendszeren

A Squid Proxy telepítése a CentOS rendszeren

A Squid egy népszerű, ingyenes Linux-program, amely lehetővé teszi továbbítási webproxy létrehozását. Ebben az útmutatóban megtudhatja, hogyan telepítheti a Squid-et a CentOS rendszerre, hogy megfordítsa

A Lighttpd (LLMP Stack) telepítése a CentOS 6 rendszeren

A Lighttpd (LLMP Stack) telepítése a CentOS 6 rendszeren

Bevezetés A Lighttpd az Apache forkja, amely sokkal kevésbé erőforrás-igényes. Könnyű, innen kapta a nevét, és meglehetősen egyszerű a használata. Telepítés

Három ingyenes szervervezérlő panel (gyors telepítés)

Három ingyenes szervervezérlő panel (gyors telepítés)

1. Virtualmin/Webmin A Virtualmin egy hatékony és rugalmas web hosting vezérlőpanel Linux és UNIX rendszerek számára, amely a jól ismert nyílt forráskódú webbázison alapul.

Yii alkalmazás beállítása Ubuntu 14.04-en

Yii alkalmazás beállítása Ubuntu 14.04-en

A Yii egy PHP-keretrendszer, amely lehetővé teszi alkalmazások gyorsabb és egyszerűbb fejlesztését. A Yii telepítése Ubuntura egyszerű, amint azt pontosan megtudhatja

A képernyő használata Ubuntu 14.04-en

A képernyő használata Ubuntu 14.04-en

A Screen egy olyan alkalmazás, amely lehetővé teszi a terminálmunkamenetek többszöri használatát egy ablakon belül. Ez lehetővé teszi több terminálablak szimulálását, ahol ez ma

Állítsa be a saját DNS-kiszolgálóját a Debian/Ubuntu rendszeren

Állítsa be a saját DNS-kiszolgálóját a Debian/Ubuntu rendszeren

Ez az oktatóanyag elmagyarázza, hogyan állíthat be DNS-kiszolgálót a Bind9 használatával Debian vagy Ubuntu rendszeren. A cikkben ennek megfelelően helyettesítse be a saját-domain-neve.com címet. TH-nál

A Logrotate használata naplófájlok kezelésére

A Logrotate használata naplófájlok kezelésére

Bevezetés A Logrotate egy Linux segédprogram, amely leegyszerűsíti a naplófájlok kezelését. Általában naponta egyszer fut egy cron-feladaton keresztül, és kezeli a naplóbázist

A statikus hálózat és az IPv6 konfigurálása CentOS 7 rendszeren

A statikus hálózat és az IPv6 konfigurálása CentOS 7 rendszeren

A VULTR a közelmúltban változtatásokat hajtott végre a saját oldalukon, és most már mindennek jól kell működnie, ha a NetworkManager engedélyezve van. Ha szeretné letiltani

Az Icinga2 módosítása a mester/kliens modell használatához CentOS 6 vagy CentOS 7 rendszeren

Az Icinga2 módosítása a mester/kliens modell használatához CentOS 6 vagy CentOS 7 rendszeren

Az Icinga2 egy hatékony felügyeleti rendszer, és mester-kliens modellben használva helyettesítheti az NRPE-alapú felügyeleti ellenőrzések szükségességét. A mester-kliens

A Red5 Media Server beállítása az Ubuntu 16.04 rendszeren

A Red5 Media Server beállítása az Ubuntu 16.04 rendszeren

Más rendszert használ? A Red5 egy Java nyelven megvalósított nyílt forráskódú médiaszerver, amely lehetővé teszi többfelhasználós Flash-alkalmazások, például élő streamin futtatását.

Fordítsa le és telepítse az Nginx-et a PageSpeed ​​Modul segítségével a Debian 8 rendszeren

Fordítsa le és telepítse az Nginx-et a PageSpeed ​​Modul segítségével a Debian 8 rendszeren

Ebben a cikkben látni fogjuk, hogyan fordíthatja le és telepítheti az Nginx fővonalat az Nginx hivatalos forrásaiból a PageSpeed ​​modullal, amely lehetővé teszi a

Az Apache Cassandra 3.11.x telepítése Ubuntu 16.04 LTS rendszeren

Az Apache Cassandra 3.11.x telepítése Ubuntu 16.04 LTS rendszeren

Más rendszert használ? Az Apache Cassandra egy ingyenes és nyílt forráskódú NoSQL adatbázis-kezelő rendszer, amelyet úgy terveztek, hogy biztosítsa a méretezhetőséget,

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 <<strong>>Windows ISO<<strong>> 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.

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.

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 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é.