Jak zkontrolovat otevřené soubory v Linuxu

How Check Open Files Linux



Možná jste narazili na rčení: Všechno je v Linuxu soubor. Ačkoli to není tak úplně pravda, skrývá to soubor pravd.

V systémech podobných Linuxu a Unixu je vše jako soubor. To znamená, že zdrojům v systému Unix bude přiřazen deskriptor souborů, včetně úložných zařízení, síťových zásuvek, procesů atd.







Deskriptor souboru je jedinečné číslo, které identifikuje soubor a další vstupní/výstupní zařízení. Popisuje zdroje a způsob, jakým k nim jádro přistupuje. Představte si to jako bránu k hardwarovým prostředkům abstrakce jádra.



Koncept deskriptorů souborů bohužel přesahuje rámec tohoto tutoriálu; zvažte níže uvedený odkaz, abyste se mohli začít učit více:



https://en.wikipedia.org/wiki/File_descriptor





To znamená, že Unix a unixové systémy jako Linux takové soubory hojně využívají. Jako zkušený uživatel Linuxu je neuvěřitelně užitečné vidět otevřené soubory a proces a uživatele, kteří je používají.

Tento tutoriál se zaměří na způsoby, jak zobrazit otevřené soubory a který proces nebo uživatel je zodpovědný.



Předběžné požadavky

Než začneme, ujistěte se, že máte:

  • Linuxový systém
  • Uživatel s oprávněními root nebo sudo

Pokud máte tyto, začněme:

Nástroj LSOF

Vytvořil Victor A Abell, Seznam otevřených souborů nebo zkráceně lsof je nástroj příkazového řádku, který nám umožňuje zobrazit otevřené soubory a procesy nebo uživatele, kteří je otevřeli.

Nástroj lsof je k dispozici ve velkých distribucích Linuxu; může se však zdát, že není nainstalován, a proto může být nutné jej nainstalovat ručně.

Jak nainstalovat lsof na Debian/Ubuntu

Chcete -li jej nainstalovat do Debianu, použijte příkaz:

sudo apt-get aktualizace

sudo apt-get installlsof-a

Jak nainstalovat na REHL/CentOS

Chcete -li nainstalovat na REHL a CentOS, použijte příkaz:

sudodnf aktualizace

sudodnfNainstalujtelsof

Jak nainstalovat na Arch

Na Arch zavolejte správce balíčků pomocí příkazu:

sudopacman-Jeho

sudopacman-Slsof

Jak nainstalovat na Fedoru

Na Fedoře použijte příkaz:

sudo mňam instalacelsof

Jakmile budete mít nainstalovaný a aktualizovaný nástroj lsof, můžeme jej začít používat.

Základní použití

Chcete -li použít nástroj lsof, zadejte příkaz:

sudolsof

Jakmile provedete výše uvedený příkaz, lsof vypíše mnoho informací, jak je uvedeno níže:

Výše uvedený výstup zobrazuje všechny soubory otevřené procesy. Výstup má různé sloupce, z nichž každý představuje konkrétní informace o souboru.

  • Sloupec PŘÍKAZ - zobrazuje název procesu, který soubor používá.
  • PID - ukazuje identifikátor procesu pomocí souboru.
  • TID - Zobrazuje ID úkolu (vlákna) procesu.
  • TASKCMD - Představte název příkazu úkolu.
  • UŽIVATEL - Vlastník procesu.
  • FD - Zobrazuje číslo deskriptoru souboru. Takto procesy používají soubor; možnosti dostupné v tomto sloupcovém výstupu zahrnují:
  • cwd - aktuální pracovní adresář.
  • mem -soubor mapovaný do paměti
  • pd - nadřazený adresář
  • jld - adresář vězení
  • ltx - text sdílené knihovny
  • rtd - kořenový adresář.
  • txt - programový kód a data
  • NS - soubor trasování jádra.
  • chybovat - Chyba informace o deskriptoru souboru
  • mmp -Zařízení mapované na paměť.
  • TYP - Ukazuje typ uzlu přidruženého k souboru, například:
  • Unix - pro soket domény Unix.
  • TOBĚ - představuje adresář
  • REG - představující běžný soubor
  • CHR - představuje soubor speciálních znaků.
  • ODKAZ - soubor symbolického odkazu
  • BLK - Blokovat speciální soubor
  • INET - soket internetové domény
  • FIFO - pojmenovaná dýmka (soubor First In First Out)
  • TRUBKA - pro potrubí

A mnoho dalších.

  • ZAŘÍZENÍ - Zobrazuje čísla zařízení oddělená čárkami v pořadí souboru speciálních znaků, bloku speciálních, pravidelných, adresářů a souborů NFS.
  • VELIKOST/VYPNUTO - ukazuje velikost ofsetu souboru souboru v bajtech.
  • UZEL - zobrazuje číslo uzlu lokálního souboru, typ pro typ internetového protokolu atd.
  • NÁZEV - zobrazuje název bodu připojení a fs, na kterých je soubor umístěn.

Poznámka: Podrobné informace o sloupcích najdete v příručce lsof.

Jak zobrazit procesy, které otevřely soubor

Lsof nám poskytuje možnosti, které nám pomáhají filtrovat výstup tak, aby zobrazoval pouze procesy, které otevřely konkrétní soubor.

Chcete -li například zobrazit soubor, který otevřel soubor /bin /bash, použijte příkaz jako:

sudolsof/dopoledne/bash

Tím získáte výstup, jak je uvedeno níže:

PŘÍKAZ PID UŽIVATEL VELIKOST TYPU FD/OFF NODE NAME

ksmtuned1025root txt REG253,0 1150704 428303 /usr/dopoledne/bash

bash 2968centos txt REG253,0 1150704 428303 /usr/dopoledne/bash

bash 3075centos txt REG253,0 1150704 428303 /usr/dopoledne/bash

Jak zobrazit soubory otevřené konkrétním uživatelem

Můžeme také filtrovat výstup a zobrazit soubory otevřené konkrétním uživatelem. To provedeme pomocí příznaku -u následovaného uživatelským jménem jako:

sudolsof-ustovky

Tím získáte výstup, jak je uvedeno níže:

Jak zobrazit soubory otevřené konkrétním procesem

Předpokládáme, že chceme zobrazit všechny soubory otevřené konkrétním procesem? K tomu můžeme použít PID procesu k filtrování výstupu.

Níže uvedený příkaz například ukazuje soubory otevřené pomocí bash.

sudolsof-p 3075

Získáte tak pouze soubory otevřené systémem systemd, jak je znázorněno na obrázku:

Jak zobrazit soubory otevřené v adresáři

Aby se soubory otevřely v konkrétním adresáři, můžeme předat možnost +D následovanou cestou adresáře.

Například seznam otevřených souborů v adresáři /etc.

sudol +f/atd

Níže je uveden výstup pro toto:

Jak zobrazit připojení k síti

Protože vše v Linuxu je soubor, můžeme získat síťové soubory, jako jsou soubory TCP nebo připojení.

Můžeme použít příkaz:

sudolsof-iTCP

Tím získáte připojení TCP v systému.

Můžete také filtrovat podle konkrétního portu pomocí níže uvedeného příkazu:

sudolsof-i:22

Tím získáte výstup, jak je uvedeno níže:

Jak průběžně zobrazovat soubory

Lsof nám poskytuje režim pro smyčku výstupu každých několik sekund. To vám umožní nepřetržitě sledovat soubory otevřené procesem nebo uživatelem.

Tato možnost však vyžaduje, abyste proces ukončili ručně.

Níže uvedený příkaz například nepřetržitě monitoruje soubory otevřené na portu 22:

sudolsof -r-i:22

Jak vidíte, ve třetí smyčce lsof zachytí navázané připojení k serveru na SSH.

Závěr

Lsof je neuvěřitelně užitečný nástroj. Umožňuje monitorovat kritické soubory a také sledovat uživatele a procesy otevírání souborů. To může být neuvěřitelně užitečné při řešení potíží nebo při hledání škodlivých pokusů o systém.

Jak je ukázáno v tomto kurzu, pomocí různých příkladů a metod můžete kombinovat funkce poskytované nástrojem lsof pro vlastní monitorování.

Děkujeme za přečtení a sdílení! Doufám, že jste se dozvěděli něco nového!