GNU/Linux >> Znalost Linux >  >> Linux

Příkaz lsof v Linuxu s příklady

Úvod

lsof příkaz znamená Seznam otevřených souborů a ukazuje otevřené soubory a který proces je používá. Protože Linux vidí každý objekt jako soubor, jako jsou zařízení, adresáře atd., neidentifikované otevřené soubory brání uživatelům v jejich úpravě.

Kromě toho je kvůli velkému počtu souborů obtížné najít škodlivé procesy. lsof příkaz pomáhá identifikovat tyto procesy, abyste je mohli ukončit.

Tento článek vysvětlí, jak používat Příkaz lsof v Linuxu s příklady.

Předpoklady

  • Přístup k terminálu.
  • Oprávnění skupiny Sudo.
  • Oprávnění uživatele root pro některé příkazy.

lsof syntaxe příkazu

lsof syntaxe příkazu je:

lsof [options]

Poznámka: Pro většinu příkazů spusťte lsof s sudo abyste se vyhnuli chybám typu „povolení odepřeno“.

lsof Možnosti příkazu

lsof příkaz má mnoho možností. Níže uvedená tabulka obsahuje argumenty, které se používají nejčastěji:

Možnost Popis
lsof Uvádí seznam všech otevřených souborů.
-b Potlačuje bloky jádra.
/ [file system] / Zobrazuje otevřené soubory v konkrétním systému souborů.
/dev/tty* Zobrazuje soubory spojené s terminálem.
-u [username] Vytiskne všechny soubory otevřené uživatelem.
-u ^[username] Vytiskne všechny soubory otevřené všemi kromě konkrétního uživatele.
-c [process] Vypisuje všechny soubory, ke kterým přistupuje konkrétní proces.
-p [process ID] Zobrazuje všechny otevřené soubory spojené s konkrétním ID procesu.
-p ^[process ID] Zobrazuje soubory otevřené všemi ostatními PID.
-R Uvádí ID nadřazených procesů.
+D [directory path] Vytiskne všechny otevřené soubory v adresáři.
-i Zobrazí všechny soubory, ke kterým přistupuje síťová připojení.
-i [IP version number] Filtruje soubory na základě jejich IP.
- i [udp or tcp] Filtruje otevřené soubory podle typu připojení (TCP nebo UDP).
-i :[port number] Najde procesy běžící na konkrétním portu.
-i :[port range] Najde procesy běžící na konkrétních rozsazích portů.
-t [file name] Uvádí ID procesů, které přistoupily ke konkrétnímu souboru.
# kill -9 'lsof -t -u [user] ' Zabije všechny uživatelské procesy.
-d mem Zobrazuje všechny soubory mapované v paměti.
[path] | grep deleted Vytiskne uzamčené smazané soubory.
man Otevře manuálovou stránku.

lsof příkladů příkazů

lsof obsahuje různé argumenty umožňující uživatelům spravovat aktivity správy systému a sítě. Níže jsou uvedeny nejběžnější lsof případy použití.

Vypsat všechny soubory

Při spuštění bez jakýchkoli možností lsof uvádí všechny soubory otevřené jakýmkoli procesem:

sudo lsof

lsof příkaz vypíše spoustu podrobností. Proto vždy zadávejte lsof s less pro zobrazení výstupu po jedné stránce.

sudo lsof | less

Chcete-li přejít na konec seznamu, stiskněte Enter nebo šipka dolů . Opusťte seznam pomocí Q .

lsof výstup se skládá z různých sloupců. Ne všechny sloupce však platí pro každý typ souboru. Záhlaví vypadá takto:

Výchozí sloupce v lsof výstupy jsou:

  • PŘÍKAZ - Odkazuje na příkaz spojený s procesem, který otevřel soubor.
  • PID - Identifikační číslo procesu, ve kterém je soubor spuštěn.
  • TID - Představuje identifikační číslo úkolu pro příslušný proces. Pokud soubor otevřel proces, nikoli úloha, pole je prázdné.
  • TASKCMD - Odkazuje na název příkazu v prvním sloupci. Nicméně TASKCMD se může lišit, když úloha změní název příkazu.
  • UŽIVATEL - Jmenuje uživatele, který provádí proces. Sloupec obsahuje ID uživatele nebo jméno.
  • FD - Je deskriptor souboru, který proces používá k přidružení k souboru?
  • TYP - Zobrazuje typ souboru a jeho identifikační číslo.
  • ZAŘÍZENÍ - Vytiskne čísla zařízení související se souborem.
  • VELIKOST/VYPNUTO - Představuje hodnotu nebo soubor pořízený během běhu (velikost nebo offset).
  • NODE - Číslo uzlu místního souboru nebo číslo inodu adresáře/nadřazeného adresáře.
  • NAME - Zobrazuje cestu nebo odkaz na soubor.

Skrýt bloky jádra

Výchozí lsof výstup také obsahuje soubory, které jsou otevřeny jádrem. Chcete-li potlačit bloky jádra, spusťte lsof s -b příznak:

sudo lsof -b

Zobrazení souborů konkrétního souborového systému

Použijte lsof příkaz pro zobrazení otevřených souborů v konkrétním systému souborů:

sudo lsof / [file system] /

Chcete-li například zobrazit všechny otevřené soubory v sys adresář, spusťte:

sudo lsof / sys/

Tisk souborů terminálu

Seznam všech otevřených souborů připojených k terminálu zacílením na dev adresář s lsof :

lsof /dev/tty*

Zobrazit všechny soubory, ke kterým má uživatel přístup

Použijte lsof s -u příznak pro zobrazení souborů otevřených konkrétním uživatelem:

sudo lsof -u [username]

Například:

lsof -u saraz

Příkaz zobrazí seznam souborů, které otevřel saraz .

Chcete-li vytisknout všechny soubory otevřené všemi kromě konkrétního uživatele, spusťte:

sudo lsof -u ^[username]

Například:

lsof -u ^saraz

Výstup zobrazuje soubory ovládané jinými uživateli než saraz .

Zobrazení souborů používaných procesem

-c flag otevře všechny soubory používané procesem:

sudo lsof -c [process]

Chcete-li například zobrazit seznam souborů otevřených pomocí wpa_suppl proces, spusťte:

sudo lsof -c wpa_suppl

Další možností je použít pouze část názvu programu:

sudo lsof -c wpa

lsof vrátí všechny programy začínající výrazem wpa , která zahrnujewpa_suppl .

Navíc -c volba poskytuje stejný výstup jako potrubí lsof s grep :

sudo lsof | grep wpa_suppl

Tisk souborů otevřených konkrétním PID

Použijte -p možnost filtrovat konkrétní soubory podle ID procesu (PID). Například níže uvedený výstup zobrazuje všechny soubory s PID 635.

sudo lsof -p 635

Na druhou stranu přidejte stříšku ^ symbol pro tisk souborů otevřených všemi ostatními procesy:

sudo lsof -p ^635

Navíc kombinuje lsof s -R příznak přidá na výstup identifikační číslo nadřazeného procesu (PPID).

Chcete-li získat informace o PPID pro konkrétní PID, spusťte:

sudo lsof -p [PID] -R

Chcete-li například získat PPID pro 635 PID, zadejte:

sudo lsof -p 635 -R

Výstup zobrazuje sloupec PPID přidaný do záhlaví.

Zobrazit soubory v adresáři

Chcete-li zobrazit všechny soubory, které byly otevřeny v adresáři, použijte následující příkaz:

sudo lsof +D [directory path]

Tato volba také rekuruje podadresáře. Chcete-li se vyhnout opakování, použijte +d vlajka.

Zobrazit soubory, ke kterým přistupují síťová připojení

Použijte -i příznak s lsof zkontrolovat, které soubory jsou otevřeny síťovým připojením. Proveďte tento příkaz:

sudo lsof -i

Výše uvedený příklad vytiskne soubory otevřené síťovým připojením bez ohledu na typ připojení.

-i flag přidává do lsof mnoho všestrannosti , což uživatelům umožňuje filtrovat soubory na základě různých kritérií. Použijte lsof -i [options] komu:

  1. Filtrujte soubory na základě jejich IP adresy s:
sudo lsof -i [IP version number]

Například spuštěním tohoto příkazu zobrazíte pouze soubory IPv4:

sudo lsof -i 4

Naopak tiskněte pouze soubory IPv6 s:

sudo lsof -i  6
  1. Zobrazit pouze soubory, které používají protokol tcp nebo udp připojení zadáním typu protokolu:
sudo lsof -i [udp or tcp]
  1. Najděte procesy běžící na konkrétním portu . Tato možnost je užitečná pro kontrolu, který soubor brání jiné aplikaci ve spojení s konkrétním portem. Spusťte příkaz s číslem portu nebo názvem služby ze sloupce názvu:
sudo lsof -i :[port number/name]
  1. Vytisknout všechny soubory otevřené na konkrétních rozsahech portů .

Chcete-li například zobrazit seznam otevřených souborů s rozsahy portů UDP 1-1024, spusťte:

Seznam ID procesů obsahujících otevřené soubory

Chcete-li zobrazit PID pro procesy, které otevřely konkrétní soubor, použijte -t a zadejte název souboru.

lsof -t [file name]

Zabít všechny uživatelské procesy

-t flag také zabije všechny procesy konkrétního uživatele. Chcete-li například zabít všechny procesy uživatelem notsara , spusťte tento příkaz jako root:

# kill -9 'lsof -t -u notsara'

Vytisknout všechny soubory mapované v paměti

lsof vytiskne, které procesy mají soubory mapované v paměti. Chcete-li tyto procesy zobrazit, spusťte:

 lsof -d mem

Zobrazit uzamčené smazané soubory

Proces někdy udržuje velké soubory uzamčené i poté, co byly smazány, což spotřebovává místo na disku.
Použijte Lsof najít soubory, které jsou v Linuxu odstraněny, ale jsou stále uzamčeny jedním nebo více procesy.
Například vyhledejte smazané soubory z kořenového adresáře pomocí lomítka (/ ) jako symbol cesty:

sudo lsof [path] | grep deleted

Kombinovat více možností

lsof umožňuje více položek hledání na příkazovém řádku. Použijte A a NEBO logiku pro kombinování různých argumentů pro získání konkrétních výsledků. Níže jsou uvedeny nejběžnější příklady.

  1. Seznam souborů otevřených konkrétním uživatelem nebo proces s:
sudo lsof -u [username] -c [process]

Výstup vytiskne oba soubory otevřené uživatelem saraz a ty, které používá proces snapd .

  1. Zobrazit pouze soubory, které odpovídají prvnímu hledanému výrazu a druhému hledanému výrazu s logickým operátorem -a (a):
sudo lsof -u [username] -c [process] -a

V tomto případě lsof zobrazuje pouze soubory otevřené uživatelem saraz a bash proces.

  1. Najděte všechna síťová připojení uživatele:
sudo lsof -i -u [username] -a

-i a -a příznaky s lsof příkaz tisknout veškerou aktivitu uživatele root .

Další informace o lsof

lsof příkaz má více možností než jakýkoli jiný příkaz Linux. man stránka má téměř 2000 řádků a nabízí spoustu informací.

Chcete-li prozkoumat možnosti příkazu, spusťte:

man lsof

Závěr

Tento tutoriál vám ukáže, jak používat lsof příkaz pro odstraňování potenciálních bezpečnostních a systémových problémů s praktickými příklady.

Dále se naučte kopírovat soubory a adresáře v Linuxu a porovnat dva soubory pomocí příkazu Linux diff.


Linux
  1. Linux Tee Command s příklady

  2. JQ Command v Linuxu s příklady

  3. Linuxový příkaz rsync s praktickými příklady

  1. wc Linux Command s příklady

  2. Linux řazení příkazů s příklady

  3. 7 Příklady příkazu lsof v Linuxu

  1. Echo Command v Linuxu (s příklady)

  2. man Command v Linuxu s příklady

  3. Příkaz AWK v Linuxu s příklady