V systému neustále běží celá řada procesů, které přistupují k různým souborům systému. Těmito soubory mohou být soubory na disku, skripty, síťové zásuvky, zařízení, pojmenované kanály a další. Pomocí „lsof“ je možné provádět spoustu věcí, například ladění. Je také docela užitečné pro správce systému zjistit, k jakým souborům se přistupuje pomocí jakých procesů. Jedním z nejužitečnějších scénářů, které jsem našel, je situace, kdy se chystáte odpojit souborový systém, ale stále k němu přistupujete.
Bez dalších okolků začněme s „lsof“! Předpokládám, že váš současný systém UNIX / Linux již má „lsof“ nainstalován.
Umístění
které také
Toto ohlásí úplnou cestu k příkazu, v tomto případě „lsof“.
„Lsof“ verzez -v
Toto ohlásí podrobné informace o verzi „lsof“, včetně data sestavení binárního souboru, verze kompilátoru, příznaků kompilátoru a dalších.
Základní „lsof“ použití
Spustit „lsof“ sám.
také
Toto hlásí VELKÝ seznam všech souborů, ke kterým systém přistupuje v okamžiku spuštění příkazu.
I když jsou všechna pole vysvětlující, většinou se zmást sloupci „FD“ a „TYPE“ a jejich hodnotami. Podívejme se na ně.
FD: Zkratka „File Descriptor“. Přichází s následujícími hodnotami.
- cwd: Aktuální pracovní adresář
- rtd: Kořenový adresář
- txt: Text programu (data, kód atd.)
- mem: Soubor mapovaný do paměti
- err: FD information error
- mmap: Zařízení mapované do paměti
- ltx: Text sdílené knihovny (data a kód)
- m86: Mapovaný soubor DOS Merge
Ve sloupci jsou i další hodnoty, například „1u“ následované u, r, w atd. hodnota. Co to znamená??
- r: Přístup ke čtení
- w: Přístup pro zápis
- u: Přístup pro čtení a zápis
- - : Neznámý režim a obsahuje zamykací znak
- „: Režim není znám a není zde žádný znak zámku
TYP: Popisuje typ souboru a jeho identifikaci. Hodnoty jsou následující.
- DIR: Adresář
- CHR: Soubor zvláštních znaků
- REG: Běžný soubor
- FIFO: První dovnitř, první ven
Otevřené soubory specifické pro uživatele
Linux je skvělá platforma pro více uživatelů. Více uživatelů může přistupovat k systému současně a provádět operace, ke kterým mají oprávnění.
Chcete-li zkontrolovat soubory, ke kterým přistupuje určitý uživatel, spusťte následující příkaz.
lsof -u
Pro kontrolu uživatelů s vyšší hodností však „lsof“ bude potřebovat oprávnění „superuživatele“.
sudo lsof -u
Co takhle zkontrolovat všechny příkazy a soubory, ke kterým určitý uživatel přistupuje? Spusťte následující.
také -i -u
Opět platí, že pro uživatele s vyšší hodností bude „lsof“ potřebovat oprávnění „superuživatele“.
sudo lsof -i -u
Běžící procesy specifické pro port
Chcete-li zjistit všechny procesy, které aktuálně používají určitý port, volejte „lsof“ s příznakem „-i“ následovaným protokolem a informacemi o portu.
také -i<46>:
Chcete-li například zkontrolovat všechny programy, které aktuálně přistupují k portu 80 přes protokol TCP / IP, spusťte následující příkaz.
lsof -i TCP: 80
Tuto metodu lze také použít k zobrazení všech procesů, které používají porty v určitém rozsahu, například 1 až 1000. Struktura příkazů je podobná jako dříve, s trochou kouzla v části s číslem portu.
lsof -i TCP: 1-1000
Procesy specifické pro protokol
Zde jsou 2 příklady ukazující procesy, které aktuálně používají protokoly IPv4 a IPv6.
také -i 4z -i 6
Výpis síťových připojení
Následující příkaz ohlásí všechna síťová připojení z aktuálního systému.
také -i
S výjimkou ^
Ano, můžeme vyloučit konkrétního uživatele, port, FD a další pomocí znaku „^“. Musíte jej používat opatrně, abyste nepokazili celý výstup.
V tomto příkladu pojďme vyloučit všechny procesy z „root“ uživatele.
lsof -u ^ root
Existují i jiné způsoby použití tohoto vylučovacího mechanismu s „lsof“, například s příznaky jako „-c“, „-d“ atd. Ne všechny příznaky tento mechanismus podporují. Proto doporučuji před implementací do některých skriptů vyzkoušet demo s touto metodou s jakýmkoli příznakem.
PID vyhledávání
PID je důležitá vlastnost každého běžícího procesu v systému. Umožňuje jemnější určení určitého procesu. Název procesu není v mnoha situacích docela užitečný, protože stejný binární soubor může vytvářet jeho kopie a provádět paralelně různé úlohy.
Pokud nevíte, jak získat PID procesu, použijte „ps“ k vypsání všech spuštěných procesů a filtrování výstupu pomocí „grep“ s názvem procesu nebo příkazy.
ps -A
Nyní proveďte filtrování pomocí „grep“.
ps -A | grep
Nyní zkontrolujte, k jakým souborům PID přistupuje.
lsof -pSeznam otevřených souborů pro konkrétní zařízení
Funkčnost „lsof“ se neomezuje pouze na tyto funkce. Výsledek „lsof“ můžete také filtrovat podle zařízení. Z tohoto důvodu bude příkaz vypadat nějak takto.
také
Tento příkaz je velmi užitečný k vyhledání všech spuštěných procesů s informacemi o jejich vlastníkovi, které přistupují ke konkrétnímu souborovému systému. Pokud máte potíže s odpojením souborového systému, je to nejlepší způsob, jak jít.
takéSeznam otevřených souborů v adresáři
Podobně jako v předchozím příkladu stačí předat cestu k adresáři „lsof“ a zjistit, zda k němu přistupuje nějaký proces.
Poznámka: „lsof“ zkontroluje adresář rekurzivně, takže to může nějakou dobu trvat.
= lsof + D
Bonus: ukončit veškerou aktivitu uživatelů
S touto částí buďte velmi opatrní, protože může jednoduše pokazit vše, co uživatel dělá. Následující příkaz zabije všechny spuštěné procesy uživatele.
sudo kill -9 'lsof -t -uFunkce „lsof“ se nekončí jen zde. Zde uvedené jsou ty, které budeme každý den potřebovat nejvíce. Existuje spousta dalších funkcí „lsof“, které se mohou hodit (samozřejmě v konkrétních případech).
Všechny dostupné funkce a jejich využití najdete na manuálových a informačních stránkách „lsof“.
mužinformace o
také -?
Užívat si!