一、使用netstat命令
netstat(network statistic)是一个命令行工具,可以用来查看网络相关的运行状态,包括网络连接,路由表,接口状态等等。在Ubuntu中,可以使用以下命令查看端口占用情况:
$ netstat -tuln
该命令的参数解释如下:
- -t:表示只显示TCP协议的连接
- -u:表示只显示UDP协议的连接
- -l:表示只显示正在监听的连接
- -n:表示不显示域名,而是直接显示IP地址
命令执行后,会输出类似下面的结果:
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp6 0 0 :::22 :::* LISTEN udp 0 0 127.0.0.53:53 0.0.0.0:* udp 0 0 0.0.0.0:68 0.0.0.0:* udp 0 0 0.0.0.0:5353 0.0.0.0:* udp6 0 0 :::5353 :::*
其中,Local Address 列的地址是本地的IP地址和端口号。Foreign Address 列的地址为远程的IP地址和端口号。如果显示为“127.0.0.1”或“::1”,则表示该端口只能在本地访问。
二、使用lsof命令
lsof(list open files)是一个命令行工具,可以列出当前系统打开的文件列表。在Ubuntu中,可以使用以下命令查看端口占用情况:
$ sudo lsof -i :端口号
例如,查看占用80端口的进程:
$ sudo lsof -i :80
命令执行后,会输出含有占用该端口的进程信息:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 12345 root 10u IPv4 54321 0t0 TCP *:http (LISTEN) nginx 12345 root 11u IPv6 54322 0t0 TCP *:http (LISTEN)
其中,COMMAND 表示进程名,PID 表示进程号,USER 表示进程的运行用户,TYPE 表示连接类型,FD 表示连接的文件描述符,SIZE/OFF 表示占用的资源大小等。
三、使用ss命令
ss 命令是 netstat 命令的替代品,可以列出更详细的网络连接状态信息。在Ubuntu中,可以使用以下命令查看端口占用情况:
$ ss -tulwn
该命令的参数解释如下:
- -t:表示只显示TCP协议的连接
- -u:表示只显示UDP协议的连接
- -l:表示只显示正在监听的连接
- -n:表示不显示域名,而是直接显示IP地址
- -w:表示显示完整的socket信息
命令执行后,会输出类似下面的结果:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* tcp LISTEN 0 128 :::22 :::* udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:5353 0.0.0.0:* udp UNCONN 0 0 :::5353 :::*
其中,Local Address 列的地址是本地的IP地址和端口号。Peer Address 列的地址为远程的IP地址和端口号。如果显示为“127.0.0.1”或“::1”,则表示该端口只能在本地访问。