在Linux系统中,查看当前服务开放的端口号可以通过以下几种方法:
端口号:端口号是TCP/IP协议用来区分不同服务的数字标识,范围从0到65535。其中,0到1023是系统保留端口,1024到49151是注册端口,49152到65535是动态或私有端口。
netstat
命令netstat
是一个网络统计工具,可以显示网络连接、路由表、接口统计等。
netstat -tuln
-t
显示TCP连接。-u
显示UDP连接。-l
仅显示监听套接字。-n
以数字形式显示地址和端口号。示例输出:
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 :::80 :::* LISTEN
udp 0 0 0.0.0.0:123 0.0.0.0:*
ss
命令ss
是 netstat
的替代品,性能更好,显示的信息更详细。
ss -tuln
参数含义与 netstat
相同。
示例输出:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 5 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 *:80 *:*
lsof
命令lsof
列出当前系统打开的文件,包括网络端口。
sudo lsof -i -P -n | grep LISTEN
-i
显示网络文件。-P
禁止将端口号转换为服务名。-n
禁止将IP地址转换为主机名。示例输出:
sshd 1234 root 3u IPv4 12345 0t0 TCP *:22 (LISTEN)
nginx 5678 www-data 6u IPv4 23456 0t0 TCP *:80 (LISTEN)
原因:可能是因为权限不足,或者相关进程没有监听该端口。
解决方法:
sudo
提升权限。原因:多个服务尝试监听同一个端口。
解决方法:
以下是一个简单的Python脚本示例,用于检查特定端口是否被占用:
import socket
def check_port(ip, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex((ip, port))
if result == 0:
print(f"Port {port} is in use.")
else:
print(f"Port {port} is free.")
sock.close()
check_port('127.0.0.1', 80)
通过以上方法,你可以有效地查看和管理Linux系统中的开放端口。
领取专属 10元无门槛券
手把手带您无忧上云