有時,我們可能需要檢查特定服務/協議的默認端口號或在 Linux 上偵聽某些端口的服務。 許多命令行工具可用於幫助您在 Linux 系統中搜索端口名稱和編號。
1) 使用 Netstat 命令
Nestat 命令是用於檢查活動網絡連接、接口統計以及路由表的工具。 它在所有 Linux 發行版中都可用。 但是,對於最小安裝,您可以通過運行來安裝它
對於 RedHat 和 CentOS
sudo yum install net-tools
為了 Fedora 22 及以後
dnf install net-tools
對於 Debian/Ubuntu
sudo apt-get install net-tools
用法
要顯示 TCP 和 UDP 端點的詳細信息,請運行
netstat -pnltu
輸出
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 13878/mysqld
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 21487/memcached
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1208/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1032/master
tcp6 0 0 :::80 :::* LISTEN 13625/httpd
tcp6 0 0 :::22 :::* LISTEN 1208/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1032/master
udp 0 0 0.0.0.0:64561 0.0.0.0:* 569/dhclient
udp 0 0 0.0.0.0:68 0.0.0.0:* 569/dhclient
udp 0 0 127.0.0.1:323 0.0.0.0:* 525/chronyd
udp6 0 0 :::11200 :::* 569/dhclient
udp6 0 0 ::1:323 :::* 525/chronyd
- -p 標誌 給出進程 ID 和進程名稱。
- -n 標誌顯示數字地址
- -l 標誌顯示偵聽套接字
- -t 標誌顯示 TCP 連接
- -u 標誌顯示 UDP 連接
查找偵聽特定端口的服務運行
netstat -pnltu | grep -i "80"
輸出
tcp6 0 0 :::80 :::* LISTEN 13625/httpd
同樣,要查找服務在運行時偵聽的端口
netstat -pnltu | grep -i "httpd"
輸出
tcp6 0 0 :::80 :::* LISTEN 13625/httpd
2) 使用 fuser 命令
fuser 命令用於顯示在特定端口上運行的服務的進程 ID。
大多數係統默認不安裝它。 安裝它運行
對於 RedHat 和 CentOS
yum install psmisc
對於Fedoraa 22 及更高版本
dnf install psmisc
對於 Debian 和 Ubuntu
apt-get install psmisc
為了 example, 要查找運行在端口 80 上的 PID,請運行,
fuser 80/tcp
輸出
80/tcp: 13625 18390 18391 18392 18393 18394 18442 19926 24386
使用進程 PID run 搜索進程名稱
ps -p 13625 -o comm=
輸出
httpd
3) 使用 lsof 命令
lsof 命令可用於檢查活動的 TCP 和 UDP 端點。 安裝命令行工具
對於 RedHat 和 CentOS
yum install lsof
對於Fedoraa 22 及更高版本
dnf install lsof
對於 Debian 和 Ubuntu
apt-get install lsof
要使用 lsof run 顯示活動的 TCP 和 UDP 端點,
lsof -i
輸出
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
chronyd 525 chrony 1u IPv4 14681 0t0 UDP localhost:323
chronyd 525 chrony 2u IPv6 14682 0t0 UDP localhost:323
dhclient 569 root 6u IPv4 15731 0t0 UDP *:bootpc
dhclient 569 root 20u IPv4 15720 0t0 UDP *:64561
dhclient 569 root 21u IPv6 15721 0t0 UDP *:11200
master 1032 root 13u IPv4 17345 0t0 TCP localhost:smtp (LISTEN)
master 1032 root 14u IPv6 17346 0t0 TCP localhost:smtp (LISTEN)
sshd 1208 root 3u IPv4 18639 0t0 TCP *:ssh (LISTEN)
sshd 1208 root 4u IPv6 18641 0t0 TCP *:ssh (LISTEN)
sshd 7749 root 3u IPv4 11570561 0t0 TCP ip-172-31-16-136.us-east-2.compute.internal:ssh->197.232.61.206:51088 (ESTABLISHED)
sshd 7752 ec2-user 3u IPv4 11570561 0t0 TCP ip-172-31-16-136.us-east-2.compute.internal:ssh->197.232.61.206:51088 (ESTABLISHED)
httpd 13625 root 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
mysqld 13878 mysql 14u IPv4 7277635 0t0 TCP *:mysql (LISTEN)
httpd 18390 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
httpd 18391 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
httpd 18392 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
httpd 18393 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
httpd 18394 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
httpd 18442 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
httpd 19926 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
memcached 21487 memcached 26u IPv4 6250352 0t0 TCP localhost:memcache (LISTEN)
httpd 24386 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
要顯示偵聽特定端口的進程/服務,請在指定端口時鍵入以下命令
lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 13625 root 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
httpd 18390 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
httpd 18391 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
httpd 18392 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
httpd 18393 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
httpd 18394 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
httpd 18442 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
httpd 19926 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
httpd 24386 apache 4u IPv6 7277180 0t0 TCP *:http (LISTEN)
4) 使用 Whatportis 工具
Whatportis 是一個命令行工具,可讓您搜索系統中運行的服務的端口名稱和數量。 該工具從以下位置獲取官方 TCP/UDP 端口列表