Instalace a používání lsof
lsof
je nástroj příkazového řádku pro seznam všech otevřených souborů patřících všem aktivním procesům.
Chcete-li jej nainstalovat na Linux, použijte následující příkazy v závislosti na typu distribuce, kterou používáte.
Na Debianu, Ubuntu:
sudo apt install lsof
Na CentOS, RHEL:
sudo yum install lsof
Novější verze jako CentOS 8, RHEL 8 nebo Fedora
sudo dnf install lsof
Chcete-li zjistit, které procesy běží na kterých portech, jednoduše zadejte číslo portu:
sudo lsof -i :3000
Ukázkový výstup:
# lsof -i :3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
grafana-s 264023 grafana 10u IPv6 2887779 0t0 TCP *:hbci (LISTEN)
Další podrobnosti naleznete na manuálových stránkách.
man lsof
Instalace a používání netstat
Netstat je nástroj příkazového řádku, který se používá k tisku síťových připojení, směrovacích tabulek, statistik rozhraní, masquerade připojení a členství v multicastu.
Netstat je dostupný ve výchozích úložištích většiny distribucí Linuxu.
Chcete-li jej nainstalovat na Linux a jeho varianty, postupujte takto:
Na CentOS, RHEL:
sudo yum install net-tools
# On Fedora, RHEL 8 and Centos8
sudo dnf install net-tools
Na Debianu, Ubuntu:
sudo apt install net-tools
Pomocí následujícího příkazu zjistíte, které služby naslouchají na jakých portech:
sudo netstat -tulpn
Ukázkový výstup:
# sudo netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:8088 0.0.0.0:* LISTEN 538847/influxd
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 900/nginx: master p
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:7088 0.0.0.0:* LISTEN 538639/docker-proxy
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 900/nginx: master p
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 970/sshd
tcp6 0 0 :::9080 :::* LISTEN 393063/promtail-lin
tcp6 0 0 :::3000 :::* LISTEN 264023/grafana-serv
tcp6 0 0 :::3100 :::* LISTEN 391839/loki-linux-a
tcp6 0 0 :::9090 :::* LISTEN 263154/prometheus
tcp6 0 0 :::9096 :::* LISTEN 391839/loki-linux-a
tcp6 0 0 :::9100 :::* LISTEN 262769/node_exporte
tcp6 0 0 :::44303 :::* LISTEN 393063/promtail-lin
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::7088 :::* LISTEN 538645/docker-proxy
tcp6 0 0 :::80 :::* LISTEN 900/nginx: master p
tcp6 0 0 :::8086 :::* LISTEN 538847/influxd
tcp6 0 0 :::22 :::* LISTEN 970/sshd
udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd
udp 0 0 127.0.0.1:323 0.0.0.0:* 777/chronyd
udp6 0 0 :::111 :::* 1/systemd
udp6 0 0 ::1:323 :::* 777/chronyd
udp6 0 0 fe80::458:3aff:fed6:546 :::* 850/NetworkManager
Pokud vás zajímá nějaký konkrétní port, můžete použít grep k filtrování:
sudo netstat -tulpn | grep 3000
sudo netstat -tulpn | grep grafana
Příznaky:
- Příznak -t zobrazuje připojení TCP.
- Příznak -u zobrazuje připojení udp.
- Příznak -l zobrazí naslouchající sokety.
- Příznak -p zobrazí ID procesu (PID) a název procesu čehokoli, co tento port používá.
- Příznak -n zobrazí číselné adresy.
Další podrobnosti naleznete na manuálových stránkách.
man netstat
Pomocí příkazu "ss"
ss
je nástroj příkazového řádku pro zkoumání soketů. Je to alternativa k netstat a použití ss
je téměř stejný jako netstat
. Dodává se předinstalovaný na populárních linuxových distribucích, jako je Redhat, Debian a jejich varianty.
Chcete-li zjistit, které služby naslouchají na kterých portech, spusťte:
sudo ss -tulpn
Ukázkový výstup:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 0.0.0.0:111 0.0.0.0:* users:(("rpcbind",pid=705,fd=5),("systemd",pid=1,fd=33))
udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:* users:(("chronyd",pid=777,fd=6))
udp UNCONN 0 0 [::]:111 [::]:* users:(("rpcbind",pid=705,fd=7),("systemd",pid=1,fd=35))
udp UNCONN 0 0 [::1]:323 [::]:* users:(("chronyd",pid=777,fd=7))
udp UNCONN 0 0 [fe80::458:3aff:fed6:8255]%eth0:546 [::]:* users:(("NetworkManager",pid=850,fd=26))
tcp LISTEN 0 128 127.0.0.1:8088 0.0.0.0:* users:(("influxd",pid=538847,fd=3))
tcp LISTEN 0 128 0.0.0.0:443 0.0.0.0:* users:(("nginx",pid=902,fd=8),("nginx",pid=901,fd=8),("nginx",pid=900,fd=8))
tcp LISTEN 0 128 0.0.0.0:111 0.0.0.0:* users:(("rpcbind",pid=705,fd=4),("systemd",pid=1,fd=32))
tcp LISTEN 0 128 0.0.0.0:7088 0.0.0.0:* users:(("docker-proxy",pid=538639,fd=4))
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=902,fd=9),("nginx",pid=901,fd=9),("nginx",pid=900,fd=9))
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=970,fd=5))
tcp LISTEN 0 128 *:9080 *:* users:(("promtail-linux-",pid=393063,fd=10))
tcp LISTEN 0 128 *:3000 *:* users:(("grafana-server",pid=264023,fd=10))
tcp LISTEN 0 128 *:3100 *:* users:(("loki-linux-amd6",pid=391839,fd=9))
tcp LISTEN 0 128 *:9090 *:* users:(("prometheus",pid=263154,fd=8))
tcp LISTEN 0 128 *:9096 *:* users:(("loki-linux-amd6",pid=391839,fd=10))
tcp LISTEN 0 128 *:9100 *:* users:(("node_exporter",pid=262769,fd=3))
tcp LISTEN 0 128 *:44303 *:* users:(("promtail-linux-",pid=393063,fd=11))
tcp LISTEN 0 128 [::]:111 [::]:* users:(("rpcbind",pid=705,fd=6),("systemd",pid=1,fd=34))
tcp LISTEN 0 128 [::]:7088 [::]:* users:(("docker-proxy",pid=538645,fd=4))
tcp LISTEN 0 128 [::]:80 [::]:* users:(("nginx",pid=902,fd=10),("nginx",pid=901,fd=10),("nginx",pid=900,fd=10))
tcp LISTEN 0 128 *:8086 *:* users:(("influxd",pid=538847,fd=5))
tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=970,fd=7))
Chcete-li filtrovat výstup pro konkrétní službu (např. grafana), použijte:
sudo ss -tulpn | grep grafana
sudo ss -tulpn | grep 3000
Další podrobnosti naleznete na manuálových stránkách.
man ss
Instalace a použití příkazu fixační jednotky
Nástroj příkazového řádku fuser
se také používá k identifikaci procesů pomocí souborů nebo soketů. Zobrazuje PID procesů používajících zadané soubory nebo systémy souborů.
Je také k dispozici ve výchozích úložištích většiny distribucí Linuxu.
Chcete-li jej nainstalovat v systému Linux, spusťte:
Na Debianu, Ubuntu:
sudo apt install psmisc
Na CentOS, RHEL:
sudo yum install psmisc
sudo dnf install psmisc
Potřebujeme najít PID služby nebo procesu naslouchajícího na konkrétním portu. Pojďme zkontrolovat PID procesu naslouchajícího na portu 3000 pomocí tohoto příkazu:
sudo fuser 3000/tcp
Uvidíte výstup jako níže.
3000/tcp: 264023
Zde 264023
je PID.
A pak zjistěte skutečný proces pomocí PID pomocí příkazu:
ps -p 264023 -o comm=
Výstup
# ps -p 264023 -o comm=
grafana-server
Poznámka:Přidání podrobného -v
flag umožňuje zobrazit úplné podrobnosti jediným příkazem:
sudo fuser -v 3000/tcp
Výstup:
# sudo fuser -v 3000/tcp
USER PID ACCESS COMMAND
3000/tcp: grafana 264023 F.... grafana-server
Pro více podrobností si projděte manuálové stránky.
man fuser