📅  最后修改于: 2023-12-03 15:32:42.444000             🧑  作者: Mango
为了监控和维护正在运行的服务器,了解端口的使用情况非常重要。在Linux上获取端口的使用情况是非常简单的,下面介绍几种方法。
可以使用 netstat
命令获取端口的使用情况。
netstat -tunlp
其中:
-t
:表示 TCP。-u
:表示 UDP。-n
:表示不需要将IP地址和端口号转换成对应的域名和服务名。-l
:表示监听状态的端口。-p
:表示应用程序的 PID。输出结果类似如下:
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:22 0.0.0.0:* LISTEN 1242/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1344/master
tcp6 0 0 :::80 :::* LISTEN 1391/httpd
tcp6 0 0 :::22 :::* LISTEN 1242/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 715/dhclient
还可以使用 lsof
命令获取端口的使用情况。
lsof -nP -iTCP -sTCP:LISTEN
其中:
-n
:表示不需要将IP地址和端口号转换成对应的域名和服务名。-P
:表示不需要转换端口号和协议名称。-iTCP
:表示过滤掉所有非 TCP 的连接。-sTCP:LISTEN
:表示只显示处于 Listening 监听状态的端口。输出结果类似如下:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1242 root 3u IPv4 10935 0t0 TCP *:22 (LISTEN)
sshd 1242 root 4u IPv6 10946 0t0 TCP *:22 (LISTEN)
master 1344 root 13u IPv4 11075 0t0 TCP 127.0.0.1:25 (LISTEN)
httpd 1391 apache 4u IPv6 11415 0t0 TCP *:80 (LISTEN)
httpd 1398 apache 4u IPv6 11415 0t0 TCP *:80 (LISTEN)
httpd 1399 apache 4u IPv6 11415 0t0 TCP *:80 (LISTEN)
httpd 1400 apache 4u IPv6 11415 0t0 TCP *:80 (LISTEN)
httpd 1401 apache 4u IPv6 11415 0t0 TCP *:80 (LISTEN)
httpd 1402 apache 4u IPv6 11415 0t0 TCP *:80 (LISTEN)
nmap
是一个非常流行的端口扫描工具,也可以使用它来获取端口的使用情况。
nmap localhost
输出结果类似如下:
Starting Nmap 7.80 ( https://nmap.org ) at 2021-01-01 00:00 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000047s latency).
Not shown: 992 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
443/tcp open https
3000/tcp open ppp
8080/tcp open http-proxy
本文介绍了三种获取端口使用情况的方法,其中命令行工具的使用是最为简单和方便的,只需要在终端输入命令即可,而安装工具则需要先安装才可使用。这里只列举了少量的命令和选项,可以自行查看命令的帮助文档以获取更详细的信息。