GNU/Linux >> Znalost Linux >  >> Linux

lsof Command v Linuxu (10 příkladů)

V Linuxu je vše považováno za soubory a organizované uvnitř adresářů. lsof (List of Open File) zobrazuje seznam souborů, které jsou otevřeny. Pomáhá hlavně zjistit informace o procesu, který soubory otevřel. Kromě souborů může vypsat adresář, speciální blokový soubor, sdílenou knihovnu, speciální soubor znaků, běžný kanál, pojmenovaný kanál, internetový soket, soket domény UNIX a mnoho dalších.

V tomto tutoriálu se seznámíme s příkazem lsof v Linuxu pomocí snadno srozumitelných příkladů .

příkaz lsof

Příkaz lsof je standardně dostupný ve většině distribucí Linuxu. Příkaz lsof se velmi běžně používá, když nejsme schopni odpojit disk, pak příkaz lsof pomáhá najít otevřený soubor a jeho proces, který to způsobuje.

Syntaxe:

lsof [options] [names]

Výše uvedená syntaxe zobrazí seznam všech souborů, které byly otevřeny všemi procesy v systému.

1. Seznam všech otevřených souborů

Chcete-li rychle získat seznam otevřených souborů, zadejte lsof. Obsahuje seznam všech souborů, které byly otevřeny různými procesy systému.

$ lsof 

Normálně bude výstup velmi dlouhý, použijete $ sudo lsof | more , pokud chcete obsah zobrazit po jedné obrazovce.

2. Seznam otevřených souborů podle uživatelského jména

lsof má příkaz, který lze použít k nalezení seznamu konkrétních souborů, které jsou otevřeny konkrétním uživatelem.

Pro seznam otevřených souborů podle uživatelského jména použijte následující příkaz:

$ lsof -u bobbin

Pro více uživatelů použijte následující syntaxi:

$ lsof -u [username1] -u [username2]

NEBO

$ lsof -u [username1], [username2]

Chcete-li zobrazit seznam otevřených souborů kromě určitých uživatelů:

$ lsof -u ^root

Chcete-li uvést pouze ID procesu, použijte -t možnost.

$ lsof -t -u sonar

To bude užitečné v případě, že potřebujete ukončit všechny procesy související s konkrétním použitím.

$ kill -9 lsof -t -u sonar

3. Seznam otevřených souborů podle procesu

lsof lze také použít k zobrazení seznamu souborů otevřených konkrétním procesem pomocí -c možnost následovaná názvem procesu.

Chcete-li například zobrazit seznam všech otevřených souborů podle ssh:

$ lsof -c ssh

4. Seznam otevřených souborů podle názvu souboru

Můžeme zadat název souboru jako argument pro seznam všech procesů, které otevřely konkrétní soubor.

Chcete-li zobrazit seznam všech procesů otevřených souborem /var/log/messages, napište:

$ lsof /var/log/messages

5. Seznam otevřených souborů podle ID procesu

Každému souboru je přiřazeno ID procesu. Jeden proces může otevřít velké množství souborů. Můžeme použít příkaz lsof k zobrazení seznamu všech otevřených souborů pro dané ID procesu.

Chcete-li například zobrazit otevřené soubory s ID procesu 2, zadejte:

$ lsof -p 2

Incase pro seznam otevřených souborů pro více ID procesů zadejte

$ lsof -p 2,3

Systém obsahuje velké množství procesů, z nichž každý má soubory otevřené k použití. Proces může mít mnoho podřízených procesů a tento proces je také známý jako nadřazený proces.

Příkaz lsof se používá s -R možnost získat seznam souborů otevřených pomocí PPID (Parent Process IDentification).

$ lsof -R

Z výstupu můžete v 5. sloupci zobrazit PPID otevřených souborů.

Chcete-li najít PPID pro konkrétní PID, zadejte:

$ lsof -p [PID] -R

6. Seznam otevřených souborů v adresáři

Chcete-li zobrazit seznam otevřených souborů v konkrétním adresáři, můžeme použít příkaz lsof.

Použijte +d možnost zobrazit seznam otevřených souborů v zadaném adresáři, ale nepřechází do podadresářů.

Následující příklad prohledává otevřené soubory v adresáři /var/log:

$ lsof +d /var/log

Volba +D přikazuje lsof prohledat celou hloubku adresáře pro všechny otevřené instance a také všechny soubory a adresáře, které obsahuje.

V tomto případě lsof hledá otevřené soubory v /var/log a jeho podadresářích:

$ lsof +D /var/log

7. Seznam otevřených souborů se síťovým protokolem

Systém může být připojen k různým sítím pro různé účely. Vše v Linuxu je soubor, můžeme zkoumat soubory, které se otevírají nějakým síťovým připojením v systému.

Chcete-li zobrazit seznam otevřených souborů v protokolu TCP, můžeme spustit následující příkaz.

$ lsof -i TCP 

Chcete-li zobrazit seznam otevřených souborů v protokolu UDP, můžeme spustit následující příkaz.

$ sudo lsof -i UDP 

8. Seznam otevřených souborů podle čísla portu

lsof má příkaz, který konkrétně vypisuje otevřené soubory na daném čísle portu, aby vypsal všechny procesy běžící na tomto portu.

Například pro výpis otevřených souborů na portu číslo 443

$ lsof -i :443

Otevřené soubory pro více čísel portů můžete vypsat následovně:

$ lsof -i :80,443

Můžete také zobrazit seznam otevřených souborů TCP nebo UDP podle rozsahů portů.

$ lsof -i TCP:1-49151

9. Seznam otevřených souborů podle IPv4/IPv6

V lsof je možnost zobrazit otevřené síťové soubory IPv4 nebo IPv6.

Chcete-li zobrazit otevřené soubory IPv4, zadejte

$ lsof -i4

K zobrazení otevřených souborů IPv6 lze použít následující syntaxi:

$ lsof -i6

10. Spouštět lsof nepřetržitě

Režim opakování umožňuje lsof neustále se opakovat s aktualizacemi se zadanými zpožděními. Režim opakování lze povolit pomocí možnosti „-r“ nebo „+r“, kde „+r“ skončí, když nebudou nalezeny žádné otevřené soubory, a „-r“ bude pokračovat v seznamu, dokud nebude zahájeno ruční přerušení. Každý výstup cyklu zpoždění bude oddělen pomocí „========“.

Syntaxe:

$ lsof [options] -r/+r[time-interval]

Například:

$ lsof -u sonar -r5

Záhlaví příkazů lsof

lsof má různé sloupce.

COMMAND     PID   TID TASKCMD               USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME

Název příkazu UNIX přidruženého k procesu je uložen v COMMAND sloupec.

PID zobrazí ID procesu příkazu.

USER zobrazí jméno uživatele spojeného s následujícím procesem.

TID zobrazuje ID úkolu.

FD je deskriptor souboru, který zahrnuje zkratky jako cwd (aktuální pracovní adresář), txt (textové soubory), mem (soubor mapovaný v paměti), rtd (kořenový adresář) a mnoho dalších.

TYPE je zkratka pro určitý typ souboru, jako je REG (běžný soubor), DIR (adresář), CHR (zvláštní soubor znaků) a tak dále.

DEVICE obsahuje čísla zařízení.

SIZE/OFF obsahuje velikost souboru nebo posun souboru v bajtech.

NODE hodnota sloupce představuje číslo uzlu místního souboru.

NAME zobrazí název bodu připojení a systému souborů souboru a také internetovou adresu.

Závěr

V tomto tutoriálu jsme se na příkladech dozvěděli o příkazu lsof a jeho použití. lsof poskytuje řadu možností pro přizpůsobení výstupu tak, aby vyhovoval vašim potřebám. Umožňuje vám snadno a rychle kombinovat více argumentů pro získání požadovaného výstupu.


Linux
  1. 7 Příklady příkazů Linux df

  2. 8 Příklady příkazů Linux TR

  3. sa Příklady příkazů v Linuxu

  1. Příklady příkazů ac v Linuxu

  2. Příklady příkazů df v Linuxu

  3. du příklady příkazů v Linuxu

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

  2. Praktické příklady příkazu rsync v Linuxu

  3. Příklady příkazů diff v Linuxu