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

相关推荐

  • ARM架构如何运行Linux操作系统?

    ARM架构作为当前嵌入式设备、移动终端及部分服务器的主流处理器架构,凭借其低功耗、高性能的特点,与Linux系统的开源、灵活特性高度契合,广泛应用于从物联网设备到边缘计算的各种场景,要在ARM平台上运行Linux系统,需从硬件选型、系统移植、配置优化等多个环节入手,以下将详细阐述具体过程与关键要点,硬件基础:A……

    2025年10月8日
    8500
  • Linux中sh脚本执行的具体命令和操作步骤是什么?

    在Linux系统中,.sh文件是Shell脚本文件,通常包含一系列命令,用于自动化任务、批量处理系统操作或执行复杂逻辑,要让.sh脚本成功执行,需经过权限设置、执行方式选择等步骤,本文将详细说明具体操作、方法区别及常见问题处理,执行.sh脚本前的核心准备:文件权限Linux系统通过文件权限控制用户对文件的访问……

    2025年9月25日
    7900
  • Debian/Ubuntu驱动安装失败如何自救?3步解决!

    为什么在Linux上使用Git?原生支持:Git由Linus Torvalds开发(Linux创始人),与Linux内核深度集成,性能最优,开发效率:终端操作直接高效,适合服务器环境与自动化脚本,行业标准:90%的开源项目使用Git(据GitHub 2023报告),掌握它是开发者必备技能,安装Git通过包管理器……

    2025年7月29日
    10000
  • linux如何上传数据到网盘

    Linux 中,可使用 rclone 工具,配置好网盘账户后,通过命令如

    2025年8月13日
    10600
  • 安装依赖后程序无法运行?

    在Linux系统中安装yum(Yellowdog Updater Modified)需要根据发行版选择对应方法,yum是RPM系发行版(如CentOS、RHEL、Fedora)的默认包管理器,通常预装无需手动安装,若系统缺失yum,可按以下步骤操作:确认系统环境检查是否已安装yum执行命令:which yum……

    2025年7月24日
    10300

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信