Můžete použít netstat
pro tohle. Podívejte se na příklad (hledal jsem ssh
):
netstat -putan | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1725/sshd
tcp 0 0 1.2.3.4:45734 1.2.3.5:22 ESTABLISHED 2491/ssh
tcp6 0 0 :::22 :::* LISTEN 1725/sshd
Vysvětlení:
Často používám parametry -putan
(protože jsou snadno zapamatovatelné).
-p
:zobrazit PID aplikace/procesu-u
:zobrazit porty/připojení udp-t
:zobrazit tcp porty/připojení-a
:zobrazit naslouchající i neposlouchající zásuvky-n
:číselný výstup (neprovádět DNS vyhledávání názvů hostitelů atd.)
Ve výše uvedeném výstupu vidíte, že existuje proces démona ssh (sshd
) s PID 1725
poslouchá na portu 22
na všech síťových rozhraních (0.0.0.0
). Existuje také proces klienta ssh (PID 2491
) připojené k IP adrese 1.2.3.5
na čísle portu 22
, moje IP adresa je 1.2.3.4
a můj externí port je 45734
. Vidíte, že spojení je navázáno. Proto jsem přihlášen přes ssh
.
Dalším nástrojem, který to umí, je lsof
:
# lsof -i -a -p 1981
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1981 root 3u IPv4 917 0t0 TCP host.example.com:ssh (LISTEN)
# lsof -i -a -p 1981 -n
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1981 root 3u IPv4 917 0t0 TCP 10.1.2.3:ssh (LISTEN)
# lsof -i -a -p 1981 -n -P
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1981 root 3u IPv4 917 0t0 TCP 10.1.2.3:22 (LISTEN)
#
Použité možnosti jsou následující:
-i
vytisknout internetové porty otevřené procesem-a
způsobí, že všechny možnosti budou seřazeny AND-p 1981
zobrazit výstup pro proces 1981-n
zakázat vyhledávání názvu hostitele a místo toho zobrazovat IP-P
zakázat vyhledávání služeb a místo toho zobrazovat číslo portu
lsof
má tu výhodu, že můžete specifikovat proces, který se má zkontrolovat, místo abyste jej museli grepovat z většího výstupu. netstat
je spolehlivěji dostupný na systémech, ačkoli lsof
se stává standardnějším, než býval.
ss
nástroj z balíčku iproute pro Linux