服务器测评网
我们一直在努力

Linux查询端口状态,命令具体怎么用?

在Linux系统中,端口状态管理是网络运维和服务器安全的重要环节,无论是排查服务异常、监控网络连接,还是确保端口安全,掌握Linux查询端口状态的方法都是必备技能,本文将详细介绍多种查询端口状态的命令及其使用场景,帮助读者全面掌握这一核心操作。

Linux查询端口状态,命令具体怎么用?

使用netstat命令查询端口状态

netstat是传统的网络工具,功能全面,支持多种端口状态查询方式,尽管在新版Linux中逐渐被ss命令替代,但部分系统仍依赖netstat,因此了解其用法仍具有重要意义。

基本语法与常用选项

netstat的基本语法为netstat [选项] [协议],常用选项包括:

  • -t:显示TCP端口
  • -u:显示UDP端口
  • -l:仅显示监听端口
  • -n:以数字形式显示地址和端口,避免DNS解析,加快查询速度
  • -p:显示进程ID和进程名称(需root权限)
  • -a:显示所有端口,包括监听和非监听端口

常见查询场景

  • 仅查看监听中的TCP端口
    执行netstat -tuln,系统会列出所有TCP(-t)和UDP(-u)的监听(-l)端口,并以数字形式(-n)显示地址和端口号。

    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN  
    tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN  

    第一列tcp表示协议,第四列0.0.0:22表示监听所有网卡的22端口,第六列LISTEN表示端口处于监听状态。

  • 查看所有端口连接状态
    使用netstat -an可显示所有端口(-a)的连接状态,包括ESTABLISHED(已连接)、TIME_WAIT(等待关闭)等。

    tcp        0      52 192.168.1.100:22      203.0.113.10:12345     ESTABLISHED  

    该结果表示本机通过22端口与远程建立了稳定连接。

  • 结合grep过滤特定端口
    若需查询特定端口(如80端口)的状态,可通过管道结合grep实现:

    netstat -tuln | grep ":80"  

    输出结果将包含所有与80端口相关的信息。

使用ss命令查询端口状态

ssiproute2包中的工具,旨在替代netstat,其查询速度更快、输出信息更简洁,已成为现代Linux系统的首选工具。

基本语法与常用选项

ss的基本语法为ss [选项] [过滤条件],常用选项包括:

  • -t:TCP端口
  • -u:UDP端口
  • -l:仅显示监听端口
  • -n:数字形式显示
  • -p:显示进程信息
  • -a:所有端口
  • 46:分别显示IPv4或IPv6端口

实用查询案例

  • 查看所有监听端口
    执行ss -tuln,输出结果比netstat更紧凑,

    Linux查询端口状态,命令具体怎么用?

    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      50          127.0.0.1:3306                 0.0.0.0:*  

    第一列State直接显示端口状态(如LISTEN),Local Address:Port为本地监听地址和端口。

  • 查看特定端口的连接数
    若需统计80端口的当前连接数,可使用:

    ss -ant | grep ":80" | wc -l  

    该命令会输出80端口的连接总数。

  • 显示端口关联的进程
    通过ss -tulnp可查看监听端口对应的进程信息,

    LISTEN     0      128          0.0.0.0:22                    0.0.0.0:*    users:(("sshd",pid=1234,fd=3))  

    括号内显示进程名sshd、进程ID1234及文件描述符fd=3,便于定位占用端口的程序。

使用lsof命令查询端口状态

lsof(list open files)用于列出系统打开的文件,包括网络连接、设备文件等,通过端口查询,可精准定位占用端口的进程。

基本语法

lsof查询端口的语法为lsof -i [协议]:[端口号],常用选项:

  • -i:指定网络连接
  • -P:显示端口号而非服务名
  • -n:避免DNS解析

典型应用场景

  • 查询指定端口是否被占用
    检查8080端口的使用情况:

    lsof -i :8080  

    若端口未被占用,无输出;若被占用,显示进程信息:

    COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME  
    java     5678   root   30u  IPv6  12345      0t0  TCP *:8080 (LISTEN)  

    COMMAND为进程名(如java),PID为进程ID,NAME列显示监听的端口。

  • 查看所有TCP连接
    使用lsof -i TCP可列出所有TCP连接,包括本地和远程地址。

    Linux查询端口状态,命令具体怎么用?

端口状态类型详解

无论是netstatss还是lsof,都会显示端口的不同状态,理解这些状态的含义对排查问题至关重要,以下是常见端口状态及其说明:

状态名 说明 适用场景
LISTEN 端口处于监听状态,等待连接请求 服务正常启动时的状态
ESTABLISHED 连接已建立,数据可双向传输 客户端与服务器通信中
TIME_WAIT 连接关闭后,等待足够时间确保对方收到断开请求 高并发场景下常见,避免端口耗尽
CLOSE_WAIT 远程端关闭连接,本地端未释放资源 客户端程序异常未关闭连接
FIN_WAIT1 主动关闭连接,发送断开请求后等待对方确认 正常关闭连接的中间状态
FIN_WAIT2 收到对方确认后,等待对方发送断开请求 正常关闭连接的中间状态
LAST_ACK 被动关闭方发送最后确认,等待确认完成 连接完全关闭前的状态

若发现端口长时间处于CLOSE_WAIT状态,可能表明程序存在未正确关闭连接的bug,需重点关注。

端口状态排查实战

场景1:服务无法访问,检查端口是否监听

假设Web服务无法访问,首先确认80端口是否监听:

ss -tuln | grep ":80"  

若无输出,说明服务未启动或端口配置错误;若显示LISTEN,则需检查防火墙或网络策略。

场景2:端口被占用,如何释放

若发现8080端口被未知进程占用:

lsof -i :8080  # 查看PID  
kill -9 <PID>   # 强制终止进程  

若需安全终止进程,可先用kill <PID>,等待进程自动释放资源。

场景3:监控端口连接数,防范攻击

通过定期统计端口连接数,可发现异常访问,监控22端口的连接数:

ss -ant | grep ":22" | grep ESTABLISHED | wc -l  

若连接数突然激增,可能存在暴力破解风险,需通过防火墙(如iptables)限制访问。

Linux查询端口状态是网络运维的基础技能,netstatsslsof各有优势:ss适合快速查询,lsof擅长精准定位进程,netstat在旧系统中仍有应用,掌握这些工具的使用方法,并结合端口状态知识,可有效解决服务异常、资源占用等问题,在实际操作中,需根据系统版本和需求选择合适的工具,同时注意权限管理(如使用sudo获取进程信息),确保排查过程高效安全。

赞(0)
未经允许不得转载:好主机测评网 » Linux查询端口状态,命令具体怎么用?