Ú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ů vlsof
příkaz. Napříkladlsof -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.