V systéme neustále beží množstvo procesov, ktoré pristupujú k rôznym súborom systému. Môžu to byť súbory na disku, skripty, sieťové zásuvky, zariadenia, pomenované kanály a ďalšie. Pomocou príkazu „lsof“ je možné vykonať veľa vecí, napríklad ladenie. Je tiež celkom užitočné pre správcov systému zistiť, k akým súborom sa pristupuje prostredníctvom akých procesov. Jedným z najužitočnejších scenárov, ktorý som našiel, je situácia, keď sa chystáte odpojiť súborový systém, ale stále sa k nemu pristupuje.
Bez ďalších okolkov, začnime s textom „lsof“! Predpokladám, že váš súčasný systém UNIX / Linux už má nainštalované „lsof“.
Poloha
ktoré tiež
Týmto sa nahlási celá cesta príkazu, v tomto prípade „lsof“.
Verzia „lsof“lsof -v
Takto sa nahlásia podrobné informácie o verzii „lsof“ vrátane dátumu zostavenia binárneho súboru, verzie kompilátora, príznakov kompilátora a ďalších.
Základné použitie „lsof“
Spustite „lsof“ sám.
lsof
Toto nahlási VEĽKÝ zoznam všetkých súborov, ku ktorým systém v okamihu spustenia príkazu pristupuje.
Aj keď sú všetky polia samozrejmé, väčšinou si pomýlite stĺpce „FD“ a „TYPE“ a ich hodnoty. Pozrime sa na ne.
FD: Skratka pre „deskriptor súborov“. Prichádza s nasledujúcimi hodnotami.
- cwd: Aktuálny pracovný adresár
- rtd: Koreňový adresár
- txt: Text programu (dáta, kód a ďalšie)
- mem: Súbor mapovaný do pamäte
- chyba: chyba informácií FD
- mmap: Pamäťovo mapované zariadenie
- ltx: Text zdieľanej knižnice (údaje a kód)
- m86: DOS zlúčiť mapovaný súbor
V stĺpci sú aj ďalšie hodnoty, napríklad „1u“, za ktorými nasledujú u, r, w atď. hodnotu. Čo to znamená?
- r: Prístup na čítanie
- w: Prístup na zápis
- u: Prístup na čítanie a zápis
- - : Neznámy režim a obsahuje zamykací znak
- ": Režim je neznámy a nie je tam žiadna zámková postava
TYPE: Popisuje typ súboru a jeho identifikáciu. Hodnoty sú nasledujúce.
- DIR: Adresár
- CHR: Špeciálny súbor znakov
- REG: Bežný súbor
- FIFO: Prvý dovnútra, prvý von
Otvorené súbory špecifické pre používateľa
Linux je skvelá platforma pre viacerých používateľov. Do systému môže naraz vstúpiť viac používateľov a vykonávať operácie, na ktoré majú povolenie.
Ak chcete skontrolovať súbory, ku ktorým má prístup určitý používateľ, spustite nasledujúci príkaz.
lsof -u
Na kontrolu používateľov s vyššou pozíciou však bude „lsof“ potrebovať oprávnenie „superužívateľa“.
sudo lsof -u
Čo tak vyskúšať všetky príkazy a súbory, ku ktorým určitý používateľ pristupuje? Spustite nasledujúci.
lsof -i -u
Pre používateľov s vyššou pozíciou bude „lsof“ opäť potrebovať oprávnenie „superužívateľa“.
sudo lsof -i -u
Spustené procesy špecifické pre port
Ak chcete zistiť všetky procesy, ktoré momentálne používajú určitý port, zavolajte „lsof“ s príznakom „-i“, za ktorým nasleduje protokol a informácie o porte.
lsof -i<46>:
Napríklad ak chcete skontrolovať všetky programy, ktoré momentálne pristupujú k portu 80 cez protokol TCP / IP, spustite nasledujúci príkaz.
lsof -i TCP: 80
Túto metódu je možné použiť aj na zobrazenie všetkých procesov, ktoré používajú porty v určitom rozsahu, napríklad 1 až 1000. Štruktúra príkazov je podobná ako predtým, s trochou mágie v časti s číslom portu.
lsof -i TCP: 1-1000
Procesy špecifické pre protokol
Tu sú 2 príklady ukazujúce procesy, ktoré v súčasnosti používajú protokoly IPv4 a IPv6.
lsof -i 4lsof -i 6
Zoznam sieťových pripojení
Nasledujúci príkaz nahlási všetky sieťové pripojenia z aktuálneho systému.
lsof -i
Vylúčené s ^
Áno, pomocou znaku „^“ môžeme vylúčiť konkrétneho používateľa, port, FD a ďalších. Musíte ho používať iba opatrne, aby ste nepoškodili celý výstup.
V tomto príklade vylúčime všetky procesy z používateľského „root“.
lsof -u ^ root
Existujú aj iné spôsoby použitia tohto vylučovacieho mechanizmu s „lsof“, napríklad s príznakmi ako „-c“, „-d“ atď. Nie všetky vlajky tento mechanizmus podporujú. Preto odporúčam pred implementáciou do niektorých skriptov vyskúšať demo s touto metódou s akýmkoľvek príznakom.
PID vyhľadávanie
PID je dôležitou vlastnosťou každého bežiaceho procesu v systéme. Umožňuje to presnejšie určiť určitý proces. Názov procesu nie je v mnohých situáciách celkom nápomocný, pretože ten istý binárny súbor môže vytvárať svoje kópie a vykonávať paralelne rôzne úlohy.
Ak neviete, ako získať PID procesu, jednoducho použite „ps“ na výpis všetkých spustených procesov a filtrovanie výstupu pomocou „grep“ s názvom procesu alebo príkazmi.
ps -A
Teraz vykonajte filtrovanie pomocou „grep“.
ps -A | grep
Teraz skontrolujte, k akým súborom PID pristupuje.
lsof -pZoznam otvorených súborov pre konkrétne zariadenie
Funkčnosť „lsof“ sa neobmedzuje iba na tieto funkcie. Výsledok „lsof“ môžete tiež filtrovať podľa zariadenia. Z tohto dôvodu bude príkaz vyzerať asi takto.
lsof
Tento príkaz je veľmi užitočný na zistenie všetkých spustených procesov s informáciami o vlastníkovi, ktoré majú prístup k konkrétnemu súborovému systému. Ak máte problém s odpojením súborového systému, je to najlepší spôsob, ako postupovať.
lsofZoznam otvorených súborov v adresári
Podobne ako v predchádzajúcom príklade, stačí odovzdať cestu k adresáru „lsof“ a zistiť, či k nemu nejaký proces pristupuje.
Poznámka: Program „lsof“ skontroluje adresár rekurzívne, takže to môže chvíľu trvať.
= lsof + D
Bonus: ukončenie všetkých aktivít používateľov
S touto časťou buďte mimoriadne opatrní, pretože môže jednoducho pokaziť všetko, čo používateľ robí. Nasledujúci príkaz zabije všetky spustené procesy používateľa.
sudo kill -9 'lsof -t -uFunkcie „lsof“ sa tu nekončia. Tu spomenuté sú tie, ktoré budeme každodenne potrebovať najviac. Existuje veľa ďalších funkcií „lsof“, ktoré sa môžu hodiť (samozrejme v konkrétnych prípadoch).
Všetky dostupné funkcie a ich použitie nájdete na manuálových a informačných stránkach „lsof“.
človekinfo lsof
lsof -?
Užite si to!