Úvod do Lsof

Úvod do Lsof

V Linuxu je mnoho objektů považováno za soubor, bez ohledu na to, zda je objektem ve skutečnosti soubor, zařízení, adresář nebo soket. Vypsání souboru je snadné, je k tomu vestavěný shell ls. Co když ale uživatel chtěl vidět, které soubory jsou aktuálně otevřeny procesem webového serveru? Nebo pokud by tento uživatel chtěl zjistit, které soubory jsou otevřeny v určitém adresáři? To je místo, kde lsofpřichází do hry. Představte si to lsofjako lss přidáním „otevřených souborů“.

Vezměte prosím na vědomí, že zatímco BSD mají pro tuto práci jinou utilitu fstat, několik dalších variant Unixu (například Solaris) má také lsof. Možnosti a příznaky se na ostatních platformách liší, stejně jako vzhled výstupu, ale obecně by pro ně měly být použitelné i znalosti v tomto článku.

Nejprve se podívejme na formát lsofvýstupu a na to, jak se má číst. Obvyklý výstup lsofbez jakýchkoli parametrů by vypadal následovně. Toto bylo oříznuto pro čitelnost.

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

Tyto sloupce znamenají následující:

  • COMMAND - Proces, ke kterému patří otevřený soubor, v tomto příkladu vše souvisí s init.
  • PID - Identifikační číslo procesu uvedeného procesu.
  • USER – uživatel, pod kterým proces běží. Pro init, je to téměř vždy root.
  • FD – deskriptor souboru souboru, nejběžnější je:
    • cwd- Aktuální pracovní adresář (můžete si všimnout podobnosti s pwdpříkazem, který tiskne aktuální pracovní adresář).
    • rtd - Kořenový adresář procesu.
    • txt- A text file, může to znamenat buď konfigurační soubor související s procesem, nebo "zdrojový kód" související (nebo patřící k) procesu.
    • mem - Takzvaný "soubor mapovaný do paměti", to znamená segment virtuální paměti (čti RAM), který byl přiřazen k souboru.
    • Číslo - číslo představuje skutečný deskriptor souboru, znak za číslem je režim, ve kterém je soubor otevřen:
    • r - Čtěte.
    • w - Napsat.
    • u - Číst a psát.
  • TYP – Určuje skutečný typ souboru, nejběžnější jsou:
    • REG - Běžný soubor.
    • DIR - Adresář.
    • FIFO - První dovnitř, první ven.
  • ZAŘÍZENÍ – Hlavní a vedlejší číslo zařízení, které obsahuje soubor.
  • SIZE – Velikost souboru v bajtech.
  • NODE - Číslo inodu souboru.
  • NAME – Název souboru.

To může být prozatím trochu ohromující, ale pokud s tím budete pracovat lsofněkolikrát, rychle se vám to vryje do mozku.

Jak je uvedeno výše, výstup lsofzde byl zkrácen. Bez jakýchkoli argumentů nebo filtrů lsofvytváří stovky řádků výstupu, který vás nechá jen zmatený.

Existují dva základní přístupy k řešení tohoto problému:

  • K lsofzúžení výsledků použijte jednu nebo více možností příkazového řádku.
  • Výstup proveďte například přes grep.

I když druhá možnost může znít pohodlněji, protože si nebudete muset pamatovat možnosti lsofpříkazového řádku, obecně není tak flexibilní a efektivní, takže se budeme držet první.

Představme si, že chcete otevřít soubor pomocí svého oblíbeného textového editoru a že vám textový editor řekne, že jej lze otevřít pouze v režimu pouze pro čtení, protože k němu již přistupuje jiný program. lsofvám pomůže zjistit, kdo je pachatel:

lsof /path/to/your/file

Tím vznikne výstup podobný tomuto:

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

Zřejmě jste zapomněli zavřít a starší relaci! Velmi podobný problém nastane, když se pokusíte odpojit sdílenou složku NFS a umountřekne vám, že to nejde, protože něco stále přistupuje k připojené složce. Opět lsofvám může pomoci s identifikací viníka:

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

Všimněte si koncového lomítka, to je důležité. Jinak se lsofbude předpokládat, že máte na mysli běžný soubor. Nenechte se zmást +před příznakem - lsofmá tolik možností příkazového řádku, které potřebuje +kromě těch běžnějších -. Výstup by vypadal takto:

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 znamená, že proces mocps PID 5637, který patří uživateli music, otevřel soubor s názvem RMS_GNU_SONG.ogg. I po ukončení tohoto procesu však stále přetrvává problém – svazek NFS nelze odpojit.

lsof-cpříznak, který zobrazuje otevřené soubory s libovolným názvem procesu.

lsof -c mocp

Výsledkem by byl výstup, který vypadá takto:

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

V tomto příkladu je další instance mocpspuštění, která vám brání v odpojení sdílené složky. Po vypnutí tohoto procesu se chcete ujistit, že uživatel musicnemá otevřené žádné další potenciálně problematické soubory. lsof-upříznak pro zobrazení souborů otevřených konkrétním uživatelem. Pamatujte, že soubor není vždy jen obyčejný soubor na vašem pevném disku!

lsof -u music

Můžete také předat několik uživatelů oddělených čárkami:

lsof -u music,moremusic

Důležitá poznámka o výchozí chování lsof: výsledky jsou OR na bázi, což znamená, že uvidíte výsledky otevření souboru pomocí postupů, které jsou ve vlastnictví buď uživatel music, nebo uživatel moremusic. Pokud byste chtěli vidět výsledky odpovídající procesům, které vlastní oba uživatelé, museli byste předat příznak -a:

lsof -au music, moremusic

Protože jsou oba uživatelé ve skupině musicusers, můžete také vypsat soubory podle skupiny:

lsof -g musicusers

Můžete také kombinovat příznaky příkazového řádku:

lsof -u music,moremusic -c mocp

or

lsof -u ^music +D /home/Music

Na poslední řádek jsme přidali další speciální příznak - ^, což znamená logické NOT . Pokud je výstup po spuštění tohoto příkazu prázdný, bude odpojení s největší pravděpodobností úspěšné.

V předchozích příkladech jsme se většinou dívali na běžné soubory. Jak je to se zásuvkami a síťovými připojeními?

Seznam všech aktuálních síťových připojení lsof-ipříznak:

lsof -i

Výstup vypadá podobně jako to, co jsme dosud viděli...

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)

... až na jeden rozdíl: místo názvů souborů nebo adresářů nyní sloupec NAMEzobrazuje informace o připojení. Každé spojení se skládá z následujících částí:

  • Protokol.
  • Místní název hostitele.
  • Zdrojový port připojení.
  • Název DNS cíle.
  • Cílový přístav.
  • Stav připojení.

Stejně jako u mnoha jiných nástrojů se můžete odhlásit z rozlišení názvů DNS a portů ( -na -P). Příznak -ipřebírá další parametry. Můžete určit, zda se má či nemá zobrazovat tcp, udpnebo icmppřipojení nebo určité porty:

lsof -i :25
or
lsof -i :smtp

Parametry lze opět kombinovat. Následující příklad...

lsof -i tcp:80

... vám ukáže pouze připojení TCP pomocí portu 80. Můžete jej také zkombinovat s možnostmi, které již znáte z „klasických“ souborů:

lsof -a -u httpd -i tcp

Zobrazí se všechna připojení TCP otevřená uživatelem httpd. Všimněte si -apříznaku, který mění výchozí chování lsof(jak bylo zmíněno dříve). Stejně jako u většiny nástrojů příkazového řádku můžete jít velmi hluboko. Následující zobrazí pouze připojení TCP, jejichž stav je "NASTAVENO":

lsof -i -s TCP:ESTABLISHED

V tomto okamžiku byste měli mít základní znalosti o tom lsof, jak funguje, spolu s některými běžnými případy použití. Další informace naleznete v manuálové stránce lsofvašeho systému.


Tři bezplatné ovládací panely serveru (Rychlá instalace)

Tři bezplatné ovládací panely serveru (Rychlá instalace)

1. Virtualmin/Webmin Virtualmin je výkonný a flexibilní ovládací panel webhostingu pro systémy Linux a UNIX založený na známé webové základně Open Source

Použití Logrotate ke správě souborů protokolu

Použití Logrotate ke správě souborů protokolu

Úvod Logrotate je nástroj pro Linux, který zjednodušuje správu souborů protokolu. Obvykle se spouští jednou denně prostřednictvím úlohy cron a spravuje základnu protokolů

Jak nainstalovat aplikaci Mailtrain Newsletter na Debian 9

Jak nainstalovat aplikaci Mailtrain Newsletter na Debian 9

Používáte jiný systém? Mailtrain je open-source samostatně hostovaná aplikace pro newsletter postavená na Node.js a MySQL/MariaDB. Zdroj Mailtrains je na GitHubu. toto

Monitorování využití paměti (RAM) v systému Linux

Monitorování využití paměti (RAM) v systému Linux

Monitorování zdrojů RAM vašeho VPS je velmi důležité. Zejména pokud používáte systémy ukládání do mezipaměti, jako je Redis nebo Memcached. Pokud vašemu serveru dojde paměť

Zakažte nebo omezte přihlášení uživatele root přes SSH v systému Linux

Zakažte nebo omezte přihlášení uživatele root přes SSH v systému Linux

Povolení přihlášení root přes SSH je v celém technologickém průmyslu běžně považováno za špatnou bezpečnostní praxi. Místo toho můžete provádět citlivou administrativu

Jak nainstalovat a nakonfigurovat CyberPanel na vašem serveru CentOS 7

Jak nainstalovat a nakonfigurovat CyberPanel na vašem serveru CentOS 7

Používáte jiný systém? Úvod CyberPanel je jedním z prvních ovládacích panelů na trhu, který je jak open source, tak využívá OpenLiteSpeed. Co tohle

Použití Mytop k monitorování výkonu MySQL

Použití Mytop k monitorování výkonu MySQL

Úvod Mytop je bezplatný konzolový nástroj pro monitorování výkonu MySQL. Je podobný špičkovému nástroji, ale zobrazuje dotazy MySQL. Vtip

Jak nainstalovat CentOS Web Panel (CWP) na CentOS 7

Jak nainstalovat CentOS Web Panel (CWP) na CentOS 7

CentOS Web Panel nebo CWP je výkonný ovládací panel webhostingu s otevřeným zdrojovým kódem určený pro CentOS, RHEL a CloudLinux. S pomocí CWP, systém

Jak nainstalovat Redis ze zdroje

Jak nainstalovat Redis ze zdroje

Úvod Redis je často označován jako server datových struktur. To znamená, že Redis poskytuje přístup k proměnným datovým strukturám prostřednictvím sady příkazů

Úvod do Lsof

Úvod do Lsof

V Linuxu je mnoho objektů považováno za soubor, bez ohledu na to, zda je objektem ve skutečnosti soubor, zařízení, adresář nebo soket. Vypsání souboru je snadné

Migrujte cPanel na Virtualmin

Migrujte cPanel na Virtualmin

Můžeme snadno migrovat účet serveru cPanel na server Virtualmin běžící na jakémkoli Vultr VPS. Následující kroky zahrnují vytvoření úplné zálohy na cPane

Nginx Reverse Proxy s Ghostem na Ubuntu 14.04

Nginx Reverse Proxy s Ghostem na Ubuntu 14.04

Ghost je bezplatná a open source platforma pro blogování napsaná v node.js, zcela přizpůsobitelná a určená pro publikování. Připravte server: Aktualizujte

Jak spravovat nastavení časového pásma serveru Linux

Jak spravovat nastavení časového pásma serveru Linux

Správné nastavení data a času na serveru Linux je velmi důležité. Vaše protokoly serveru a další důležité informace budou všechny odrážet časové pásmo o

Komprese obrázků na příkazovém řádku Linuxu

Komprese obrázků na příkazovém řádku Linuxu

Pokud máte na svém počítači se systémem Linux uloženo mnoho obrázků ve vysokém rozlišení, může vám docházet úložiště kvůli velkému množství místa na disku, které používáte

Nastavte Sentry přes Python na Ubuntu 16.04

Nastavte Sentry přes Python na Ubuntu 16.04

Používáte jiný systém? Úvod Sentry je open source řešení pro sledování chyb. Sentry sleduje výjimky a další užitečné zprávy

Nainstalujte phpMyAdmin do aplikace WordPress One-Click

Nainstalujte phpMyAdmin do aplikace WordPress One-Click

Úvod phpMyAdmin je pohodlný webový nástroj pro správu databází MySQL, který vám může ušetřit spoustu času při správě databáze řízené příkazy.

Jak nainstalovat aplikaci Mailtrain Newsletter na CentOS 7

Jak nainstalovat aplikaci Mailtrain Newsletter na CentOS 7

Používáte jiný systém? Mailtrain je open-source samostatně hostovaná aplikace pro newsletter postavená na Node.js a MySQL/MariaDB. Zdroj Mailtrains je na GitHubu. toto

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Umělá inteligence není v budoucnosti, je zde přímo v současnosti V tomto blogu si přečtěte, jak aplikace umělé inteligence ovlivnily různé sektory.

Útoky DDOS: Stručný přehled

Útoky DDOS: Stručný přehled

Jste také obětí DDOS útoků a nemáte jasno v metodách prevence? Chcete-li vyřešit své dotazy, přečtěte si tento článek.

Přemýšleli jste někdy, jak hackeři vydělávají peníze?

Přemýšleli jste někdy, jak hackeři vydělávají peníze?

Možná jste slyšeli, že hackeři vydělávají spoustu peněz, ale napadlo vás někdy, jak takové peníze vydělávají? Pojďme diskutovat.

Revoluční vynálezy od Googlu, které vám usnadní život.

Revoluční vynálezy od Googlu, které vám usnadní život.

Chcete vidět revoluční vynálezy Google a jak tyto vynálezy změnily život každého dnešního člověka? Pak si přečtěte na blogu a podívejte se na vynálezy od Googlu.

Friday Essential: Co se stalo s auty řízenými umělou inteligencí?

Friday Essential: Co se stalo s auty řízenými umělou inteligencí?

Koncept aut s vlastním pohonem, která vyrazí na silnice s pomocí umělé inteligence, je snem, který už nějakou dobu máme. Ale přes několik slibů nejsou nikde vidět. Přečtěte si tento blog a dozvíte se více…

Technologická singularita: vzdálená budoucnost lidské civilizace?

Technologická singularita: vzdálená budoucnost lidské civilizace?

Jak se věda vyvíjí rychlým tempem a přebírá mnoho našeho úsilí, stoupá také riziko, že se vystavíme nevysvětlitelné singularitě. Přečtěte si, co pro nás může znamenat singularita.

Evoluce ukládání dat – Infografika

Evoluce ukládání dat – Infografika

Způsoby ukládání dat se mohou vyvíjet od narození dat. Tento blog se zabývá vývojem ukládání dat na základě infografiky.

Funkcionality vrstev referenční architektury velkých dat

Funkcionality vrstev referenční architektury velkých dat

Přečtěte si blog, abyste co nejjednodušším způsobem poznali různé vrstvy v architektuře velkých dat a jejich funkce.

6 úžasných výhod toho, že máme v životě zařízení pro chytrou domácnost

6 úžasných výhod toho, že máme v životě zařízení pro chytrou domácnost

V tomto digitálním světě se chytrá domácí zařízení stala klíčovou součástí života. Zde je několik úžasných výhod chytrých domácích zařízení o tom, jak náš život stojí za to žít a zjednodušit jej.

Aktualizace doplňku macOS Catalina 10.15.4 způsobuje více problémů než řešení

Aktualizace doplňku macOS Catalina 10.15.4 způsobuje více problémů než řešení

Apple nedávno vydal doplňkovou aktualizaci macOS Catalina 10.15.4, která opravuje problémy, ale zdá se, že aktualizace způsobuje další problémy, které vedou k zablokování počítačů mac. Přečtěte si tento článek a dozvíte se více