Jako uživatelé Linuxu někdy potřebujeme vědět, na jakém čísle portu konkrétní proces naslouchá. Všechny porty jsou přidruženy k ID procesu nebo službě v operačním systému. Jak tedy najdeme tento port? V tomto článku představíme tři různé metody, které můžete použít ke zjištění, na kterém portu proces naslouchá.
Spustili jsme příkazy a postupy popsané v tomto článku na systému Ubuntu 22.04 LTS.
Metoda 1:Použití příkazu netstat
Netstat, nástroj pro statistiku sítě, se používá k zobrazení informací o síťových připojeních. To zahrnuje informace o statistikách rozhraní, směrovacích tabulkách a mnoho dalšího. Tento nástroj je k dispozici na většině systémů Linux, takže jej používáme ke zjištění, které porty určité procesy v systému používají.
Chcete-li použít příkaz netstat, musíte nainstalovat obslužný program net-tools, pokud ještě není nainstalován ve vašem systému, pomocí následujícího příkazu:
$ sudo apt install net-tools
Poté spusťte následující příkaz:
$ sudo netstat -ltnp
Výše uvedený příkaz poskytuje informace netstat na základě následujících funkcí:
- l:zobrazí pouze naslouchající zásuvky
- t:zobrazit připojení TCP
- n:zobrazí adresy v číselné podobě
- p:zobrazí ID procesu/název programu
Například ve výše uvedeném výstupu příkazu netstat běží program Apache2 s ID procesu 950 na portu číslo 80.
Můžete také filtrovat statistiky pro konkrétní port začleněním funkce grep do vašeho příkazu.
Příklad:
$ sudo netstat -ltnp | grep -w ':80'
Tento příkaz vám konkrétně řekne, který proces běží na portu číslo 80.
Metoda 2:Použití příkazu lsof
Nástroj lsof nebo nástroj Seznam otevřených souborů pomáhá při vypisování všech otevřených souborů ve vašem systému Linux. Tento nástroj můžeme použít k zobrazení všech procesů otevřených na konkrétním portu.
Chcete-li použít příkaz lsof, musíte nainstalovat obslužný program lsof, pokud ještě není nainstalován ve vašem systému, pomocí následujícího příkazu:
$ sudo apt install lsof
Použijme lsof k zobrazení služby naslouchající na konkrétním portu.
Příklad:
$ sudo lsof -i :80
Tento příkaz vypíše všechny procesy používající TCP port číslo 80.
Metoda 3:Použití příkazu fixační jednotka
Příkaz fuser zobrazí, která ID procesů používají pojmenované soubory, sokety nebo systémy souborů. Tento příkaz můžeme použít k zobrazení ID procesů běžících na konkrétním TCP portu.
Chcete-li použít příkaz fuser, musíte nainstalovat obslužný program psmisc, pokud ještě není nainstalován ve vašem systému, pomocí následujícího příkazu:
$ sudo apt install psmisc
Podívejme se na všechna ID procesů běžících na portu TCP 3306 pomocí následujícího příkazu:
$ sudo fuser 3306/tcp
V tomto příkazu můžete zadat libovolné číslo portu, abyste viděli procesy naslouchání.
Ve výše uvedeném výstupu můžete vidět, že proces ID 975 naslouchá na TCP 3306.
Chcete-li zobrazit program, kterému toto ID procesu odpovídá, spusťte následující příkaz:
Syntaxe:
$ ps -p [processID] -o comm=
V našem případě:
$ ps -p [975] -o comm=
Výstup ukazuje, že ID procesu 975 odpovídá názvu programu MySDLD. Proces ID 975 programu MySQLd tedy naslouchá na portu číslo 3306.
Pomocí tří metod, které jste se naučili v tomto článku, můžete snadno zjistit, na kterém portu TCP konkrétní proces v Linuxu naslouchá.