GNU/Linux >> Znalost Linux >  >> Linux

Jak používat příkaz lsof v Linuxu

Úkolem příkazu lsof je „vypsat otevřené soubory“ v systému. Otevřený soubor nemusí nutně znamenat pdf nebo textový soubor, ale zahrnuje soubory na disku nebo kanály používané procesy na pozadí.

Tento příkaz je užitečný nástroj pro ladicí programy operačního systému a správce systému.

I když je příkaz lsof předinstalovaný nástroj pro Linux, uživatelé Ubuntu/Debianu mohou nainstalovat pomocí apt, pokud jej nemáte nainstalovaný:

sudo apt install lsof

Ostatní uživatelé Linuxu mohou instalovat pomocí svého standardního instalačního příkazu následovaného lsof .

Přejděme rychle k použití lsof příkaz:

Seznam všech otevřených souborů v systému

Spuštěním příkazu lsof bez jakýchkoli voleb můžeme vypsat všechny otevřené soubory v systému. Pokud tak učiníte, zaplavíte terminál spoustou dat. Proto je vhodné používat less příkaz, který omezuje data vyvolaná jakýmkoli příkazem

sudo lsof | less

Stisknutím 'ENTER' nebo klávesu se šipkou dolů, můžeme přejít na konec seznamu.

Každý soubor ve výstupu poskytuje důležité informace o jeho typu a použití.

  • PŘÍKAZ – Příkaz Linux spojený s procesem zodpovědným za otevření souboru.
  • PID – ID procesu procesu uchovávajícího soubor.
  • TID – ID vlákna pro příslušný proces.
  • UŽIVATEL – Uživatel systému Linux spravuje proces.
  • FD – Deskriptor souboru používaný procesem k přidružení k souboru.
    • cwd – aktuální pracovní adresář
    • rtd – kořenový adresář
    • txt – textový program jako nějaký kód
    • paměť – soubor mapovaný v paměti
  • TYP – Typ souboru
    • REG – Běžný soubor
    • DIR – Adresář
    • CHR – Soubor znaků
    • LINK – Soubor se symbolickým odkazem
  • ZAŘÍZENÍ – Čísla zařízení související se souborem.
  • VELIKOST/VYPNUTO – Velikost souboru nebo jeho posun v bajtech.
  • NODE – Číslo inodu.
  • NAME – Název souboru.

Poznámka: Některé informace, jako je inode nebo číslo zařízení, mohou být redigovány, pokud příkaz není spuštěn s oprávněním root.

Více o výstupu se můžeme dozvědět z manuálových stránek, které jsou přístupné z terminálu spuštěním man lsof.

Seznam všech otevřených souborů konkrétním uživatelem pomocí příkazu lsof

lsof podporuje mnoho možností, které lze použít k filtrování otevřených souborů. Jedním z nich je -u možnost zobrazení otevřených souborů pro konkrétního uživatele.

sudo lsof -u <USER_NAME> | less

Třetí sloupec je založen na uživateli odpovědném za otevření souboru. Podobně jako u základního výstupu je terminál přeplněný nesmyslnými daty, a proto se používá less je doporučen příkaz.

Seznam otevřených souborů v konkrétním adresáři

Soubory existují v adresáři, proto je docela triviální, že můžeme extrahovat otevřené soubory v konkrétním adresáři.

lsof +D <DIR_NAME>

Na obrázku výše jsme uvedli soubor aktuálně otevřený ve složce Dokumenty. Otevřený soubor je běžný soubor C++.

Seznam otevřených souborů v konkrétním souborovém systému pomocí příkazu lsof

Místo jednoho adresáře lsof příkaz může vypsat otevřené soubory z určitého souborového systému. Toho je dosaženo umístěním názvu souborového systému za lsof příkaz.

lsof <FILE_SYSTEM>

Na obrázku výše zobrazujeme otevřené soubory v souborovém systému /proc.

Seznam otevřených souborů podle konkrétního procesu

Pomocí ID procesů můžeme filtrovat otevřené soubory. To lze provést pomocí -p možnost.

lsof -p <PID>

Výše uvedený fragment terminálu ukazuje seznam otevřených souborů pro proces s PID jako 3404.

Poznámka: Symbol stříšky (^) se používá k negaci parametrů v lsof příkaz. Například lsof -p ^3404 , zobrazí seznam otevřených souborů pro všechny PID kromě 3404.

Seznam otevřených síťových souborů

Linux ukládá řadu síťových souborů pro ukládání IP adres nebo konfigurace síťového rozhraní. Tyto druhy otevřených souborů lze odfiltrovat pomocí -i vlajka.

lsof -i 

Tyto soubory mají určité vlastnosti, jako jsou typy síťových protokolů. Otevřené soubory lze dále filtrovat pomocí specifických parametrů jako:

  • „4“ – Síťové soubory pro IPv4
  • „6“ – Síťové soubory pro IPv6
  • „TCP“ – Síťové soubory pro TCP
  • ‘UDP‘ – Síťové soubory pro UDP
  • „TCP:25“ – Síťové soubory pro TCP s číslem portu 25
  • „TCP:1-25“ – Síťové soubory pro TCP s číslem portu od 1 do 25

Například:

lsof -i 6

Použití příkazu lsof k vyhledávání otevřených souborů na základě příkazu

S tisíci otevřených souborů v systému se zdá nemožné lineárně hledat konkrétní příkaz. Proto lsof příkaz má -c možnost odfiltrovat otevřené soubory na základě příkazu.

lsof -c <COMMAND>

Závěr

lsof příkaz podporuje spoustu možností, které jsou účinné při ladění a odstraňování problémů se systémem. Čtenáři, kteří mají zájem, mohou manuálové stránky navštívit prostřednictvím terminálu spuštěním man lsof , abyste získali více znalostí o oprávněních a výstupu příkazu.

Neváhejte níže komentovat jakékoli dotazy nebo zpětnou vazbu.


Linux
  1. Jak používat příkaz Tar v Linuxu

  2. Jak používat Su Command v Linuxu

  3. Jak používat příkaz tar pod Linuxem

  1. Jak používat příkaz Disown v Linuxu

  2. Jak používat příkaz md5sum v Linuxu

  3. Jak používat příkaz Linux SS

  1. Jak používat dotykový příkaz v Linuxu

  2. Jak používat příkaz Linux head

  3. Jak používat příkaz Linux diff