在Linux系统中,查看被监听的端口可以通过多种命令来实现,以下是一些常用的方法:
端口监听是指服务器程序在特定端口上等待客户端的连接请求。每个端口都有一个唯一的编号,范围从0到65535。通常,小于1024的端口被系统保留用于特定的服务。
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
示例输出:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 100 :::80 :::*
lsof
命令lsof
可以列出当前系统打开的文件,包括网络端口。
lsof -i -n -P | grep LISTEN
-i
:显示网络文件。-n
:不将IP地址转换为域名。-P
:不将端口号转换为服务名。示例输出:
sshd 1234 root 3u IPv4 12345 0t0 TCP *:22 (LISTEN)
nginx 5678 www-data 6u IPv6 23456 0t0 TCP *:80 (LISTEN)
原因:可能是权限不足或端口被内核模块占用。 解决方法:
sudo
提升权限。TIME_WAIT
状态原因:表示该端口曾经有连接,但现在处于等待状态,以便重用。 解决方法:通常不需要处理,这是正常的网络行为。如果大量出现,可能需要调整TCP参数。
以下是一个简单的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 open")
else:
print(f"Port {port} is closed")
sock.close()
check_port('127.0.0.1', 80)
通过这些方法和工具,你可以有效地查看和管理Linux系统中的监听端口。
领取专属 10元无门槛券
手把手带您无忧上云