GNU/Linux >> Znalost Linux >  >> Linux

Jak na to:Použití lsof – 10 základních příkazů pro řešení problémů se serverem Linux

Úvod

V určitém okamžiku své kariéry bude každý řešit problém. A každý má svůj oblíbený krok při odstraňování problémů. Pro spoustu systémových administrátorů je prvním krokem, aby se ujistili, že je vše aktuální. Pro ostatní je to jen otázka kontroly souborů protokolu před nalezením řešení. Pro mě a další zde v Atlantic.Net je to lsof; nástroj příkazového řádku používaný k výpisu informací o souborech, které jsou otevřeny různými procesy.

lsof je výkonná, ale příliš málo známá aplikace, která se většinou používá k řešení problémů s připojením k síti. Pokud jste obeznámeni s obecnými příkazy Linuxu, lsof je snadno zapamatovatelný nástroj, protože „vypisuje otevřené soubory“.

Předpoklady

lsof je příkaz specifický pro Unix. Abyste jej mohli použít pro identifikaci systémových informací, budete muset používat systém ve stylu Unixu, jako je CentOS nebo Ubuntu. lsof je na těchto systémech předinstalovaný.

Pokud používáte systém Windows, můžete získat podobné výsledky pomocí nabídky Process Explorer a také pomocí příkazů netstat a sysinternals.

Lsof Usage Flags

Jedna věc, kterou je důležité pochopit, je, že lsof má velké množství dostupných příznaků, které lze použít k úpravě výstupu, který obdržíte. Níže jsou zobrazeny všechny dostupné příznaky:

[[email protected] ~]# lsof --help
    usage: [-?abhlnNoOPRtUvVX] [+|-c c] [+|-d s] [+D D] [+|-f[gG]] [+|-e s]
    [-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+m [m]] [+|-M] [-o [o]] [-p s]
    [+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]

Procházení jednotlivých příznaků by bylo na mnohem delší článek, takže věci zjednodušíme a pokryjeme pouze nejpoužívanější možnosti každodenního používání.

Příznaky klíčových možností

Je důležité pochopit, jak lsof funguje, zejména ve výchozím nastavení. Když předáváte volby příkazu lsof, výchozí chování je NEBO výsledky. To znamená, že spuštění lsof pomocí obou -i stejně jako -p příznakem získáte výsledky obou.

Toto jsou nejčastěji používané příznaky při odstraňování problémů:

default : with no options flags, lsof lists all open files for active processes
grouping : it's possible to group options, such as passing the flags though -nPi. Just keep an eye out for which options take additional parameters
-a : AND the result (instead of the default OR)
-l : show the userID instead of the username in the output
-h : get help
-i : selects the listing of files that match
-n : stop host name resolution of network numbers
-t : get process IDs only
-P : stop conversion of port numbers to port names

Začínáme

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

# lsof

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

Zobrazit všechna připojení:

# lsof -i

Zobrazit všechna připojení

Server, na kterém testujeme, je nový server Atlantic.Net CentOS6, který nemá nainstalované žádné další softwarové balíčky. Z výše uvedeného výstupu můžete vidět, že server naslouchá pouze provozu SSH a SMTP. Pokud chcete místo názvu služby vidět skutečné číslo portu, budeme muset příkaz spustit pomocí -Pi příznak:

lsof -Pi

Zobrazit všechna připojení naslouchající na portech bez rozlišení názvu služby.

Jak vidíte, všechny *:ssh a localhost:smtp výstup byl převeden na *:22 a localhost:25 . Pro většinu systémových administrátorů, zejména pokud nejste zvyklí procházet a analyzovat systémové služby, je často snazší řešit problémy přímou identifikací portu namísto použití názvu služby.

Zobrazit připojení na portech IPv6:

lsof -i6

Zobrazit připojení na portech IPv6

V porovnání s lsof -i dříve, tento příkaz konkrétně hledá služby s TYPE IPv6 .

Zobrazit připojení na konkrétním portu bez překládání názvu služby:

lsof -Pi :25

Zobrazit připojení na konkrétním portu bez rozlišení názvu služby

Podíváte-li se konkrétně na všechny aktuální procesy naslouchající na portu 25, ukazuje se, že v systému běží dva aktuální procesy (jeden IPv4, jeden IPv6). Žádný z těchto procesů nenaslouchá externím připojením.

Zobrazit naslouchací porty:

lsof -i -sTCP:LISTEN

Zobrazit naslouchající porty

Tento příkaz uvádí všechny spuštěné procesy, které jsou v LISTEN stavu, což znamená, že aktivně naslouchají příchozím spojením.

Zobrazit, kdo používá soubor:

lsof /path/of/file

Z výše uvedeného příkazu můžete vidět, že dva procesy aktivně běží a používají /var/log/ zprávy soubor nějakým způsobem.

Rekurzivně zobrazit všechny otevřené soubory v adresáři:

lsof +D /usr/lib

Rekurzivně zobrazit všechny otevřené soubory v adresáři

V našem testovacím systému pomocí +D flag zobrazuje šest samostatných otevřených procesů pocházejících z /usr/lib adresář.

Zobrazit otevřené soubory podle uživatele:

lsof -u atlantic-noc

Zobrazit otevřené soubory podle uživatele

Uživatel atlantic-noc má aktivní relaci SSH s ID procesu (PID) 7769.

Zobrazit všechny otevřené soubory s konkrétním ID procesu:

lsof -p 7790

Zobrazit všechny otevřené soubory s konkrétním ID procesu

 -p možnost odfiltrovala otevřené soubory, takže se zobrazí pouze ty se zadaným ID procesu. V tomto případě PID 7790. Můžete vybrat více PID zadáním čárky, například -p 7789,7790

Zobrazit veškerou síťovou aktivitu konkrétního uživatele:

lsof -a -u atlantic-noc -i

-a příznak kombinuje (změní výchozí chování OR na AND) -u-i příznaky poskytující seznam použití síťových souborů pro uživatele atlantic-noc; v tomto případě pouze jedna relace SSH.

Ještě něco?

Výše uvedené příkazy jsou pouze začátkem pro lsof; všestranný nástroj, který lze použít buď samostatně, nebo v kombinaci s jinými unixovými nástroji pro odstraňování problémů, jako je strace. Ale to je článek na jindy.

Nezapomeňte se podívat na náš blog, kde najdete aktualizace tohoto článku, další příspěvky související s Linuxem a další příkazy Unixu nebo se dozvíte více o našich spolehlivých hostingových službách VPS.


Linux
  1. Jak řešit problémy, když váš web nefunguje na linuxovém serveru

  2. Jak přenášet soubory mezi dvěma počítači pomocí příkazů nc a pv

  3. Jak spravovat soubory protokolu pomocí Logrotate v Linuxu

  1. Jak řešit problémy, když váš web nefunguje na linuxovém serveru

  2. Jak používat OpenSSH k připojení k vašemu linuxovému serveru

  3. Jak třídit soubory v Linuxu pomocí příkazu Sort

  1. Jak synchronizovat čas na serveru Linux pomocí Chrony

  2. Jak vytvořit server CS:GO na Linux VPS

  3. Jak monitorovat váš Linux Server pomocí osquery