Linux下如何查询网络端口是否被占用?

在Linux系统中,网络端口被占用可能导致服务无法启动、连接失败等问题,快速查询端口占用情况是运维和开发中的常见需求,本文将详细介绍几种常用的查询方法,涵盖传统命令和新一代工具,并附上处理建议和常见问题解答。

linux 如何查询网络端口 被占用

使用netstat命令查询端口占用

netstat是Linux系统中经典的网络工具,用于监控网络连接、路由表、接口统计等信息,虽然部分新系统已默认使用ss替代,但netstat仍广泛兼容,适合老版本系统。

常用参数及示例

  • 查看所有监听端口(仅显示TCP/UDP协议,不解析域名和端口名):

    netstat -tuln

    输出示例:

    Proto Recv-Q Send-Q Local Address           Foreign Address         State      
    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     
    udp        0      0 0.0.0.0:68              0.0.0.0:*                          
    • Proto:协议类型(TCP/UDP);
    • Local Address:本地IP和端口(0.0.0表示监听所有IP);
    • State:连接状态(LISTEN表示监听状态)。
  • 查看所有端口及进程信息(需root权限):

    netstat -anp

    输出中会包含PID/Program name列,直接显示占用端口的进程ID和名称。

  • 过滤特定端口(如查询80端口占用情况):

    netstat -tulnp | grep 80

使用ss命令查询端口占用

ssiproute2包中的工具,性能优于netstat,默认在CentOS 7+、Ubuntu 18.04+等新系统中使用,推荐优先选择。

linux 如何查询网络端口 被占用

常用参数及示例

  • 查看所有监听端口(参数与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      50         127.0.0.1:3306                   0.0.0.0:*                  
    LISTEN     0      0            [::]:80                       [::]:*                  
  • 查看所有端口及进程信息

    ss -anp
  • 过滤特定端口(如查询8080端口):

    ss -tulnp | grep 8080

使用lsof命令查询端口占用

lsof(list open files)用于列出系统打开的文件,网络端口在Linux中被视为文件,因此可通过lsof精准定位占用端口的进程。

常用参数及示例

  • 查询指定端口占用情况(如查询3306端口):

    lsof -i :3306

    输出示例:

    linux 如何查询网络端口 被占用

    COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    mysqld   1234 mysql   31u  IPv6   12345      0t0  TCP *:mysql (LISTEN)
    • COMMAND:进程名;PID:进程ID;NAME:监听的协议和端口。
  • 结合grep过滤(如查询所有监听端口):

    lsof -i -P -n | grep LISTEN

    参数说明:-P不解析端口名,-n不解析主机名,提升查询速度。

命令对比与使用场景

为方便选择,以下工具对比供参考:

命令 优点 缺点 适用场景
netstat 兼容性好,老系统必备 速度慢,信息较旧 传统Linux系统(如CentOS 6)
ss 性能高,信息全面,默认新系统 部分老系统需安装 CentOS 7+、Ubuntu 18.04+
lsof 精准定位,支持文件级查询 需单独安装(部分系统) 需查看进程详细信息时

端口被占用后的处理建议

  1. 终止占用进程:若确认进程非必要,可通过kill命令终止(如kill -9 1234,强制终止需谨慎)。
  2. 修改服务端口:编辑服务配置文件(如Nginx的nginx.conf、MySQL的my.cnf),将端口改为其他未被占用的值。
  3. 检查端口冲突:确保多个服务未配置相同端口(如开发环境多个Tomcat实例需修改server.port)。

相关问答FAQs

Q1:为什么ss命令比netstat查询速度更快?
A1:ss命令通过Netlink套接字与内核通信,直接获取网络层数据,而netstat需读取/proc文件系统,解析效率较低,对于大规模连接(如高并发服务器),ss的响应速度优势更明显。

Q2:如何找到占用端口的进程的完整路径?
A2:通过lsof获取进程ID(PID)后,使用ls -l /proc/PID/exe即可查看进程的完整路径。

lsof -i :8080 | grep LISTEN | awk '{print $2}' | xargs -I {} ls -l /proc/{}/exe

输出示例:/usr/local/nginx/sbin/nginx,即Nginx进程的可执行文件路径。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/32033.html

(0)
酷番叔酷番叔
上一篇 2025年9月28日 22:32
下一篇 2025年9月28日 22:45

相关推荐

  • Linux C集群如何扛住千万并发?

    集群化的核心目标高可用性(HA)故障自动转移:节点宕机时流量自动切换至健康节点,数据冗余:通过副本机制(如 Raft 协议)避免单点数据丢失,负载均衡 动态分配请求:避免单节点过载,提升系统吞吐量,水平扩展 按需增删节点:应对业务量波动,集群架构设计模式模式适用场景典型案例主从模式写少读多场景Redis Sen……

    2025年6月25日
    5600
  • 如何选装Linux系统不踩坑?

    Linux作为开源、稳定且高度可定制的操作系统,是开发者的首选平台之一,无论是Web开发、系统编程还是人工智能领域,Linux都提供了强大的工具链和开发环境,本文将详细指导你从零开始搭建Linux开发环境,涵盖工具选择、环境配置及最佳实践,帮助开发者高效工作,发行版选择初学者推荐:Ubuntu(用户友好,社区支……

    2025年6月18日
    5900
  • Linux系统下如何查看st号?查看st号的具体操作步骤与命令有哪些?

    在Linux系统中,“ST号”通常指存储设备(如硬盘、固态硬盘)的序列号(Serial Number),是设备的唯一标识符,常用于设备管理、故障排查、资产盘点等场景,Linux提供了多种命令和方法来查看存储设备的序列号,不同方法适用于不同的接口类型(如SATA、NVMe、SCSI等)和系统环境,以下将详细介绍几……

    2025年10月1日
    1500
  • Linux中如何倒序排列文件?

    在Linux系统中,倒序排列文件是日常管理和操作中常见的需求,无论是按文件名、修改时间、文件大小还是其他属性进行倒序,都可以通过命令行工具高效实现,本文将详细介绍几种常用的倒序排列文件的方法,涵盖基础命令组合和进阶技巧,帮助用户根据实际场景选择合适的方案,使用ls命令实现倒序排列ls是Linux中最基础的文件列……

    2025年10月4日
    3400
  • linux上如何telnet

    Linux 上,先确保安装了 telnet 客户端(如 sudo apt install telnet),

    2025年8月17日
    3600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信