当前位置:首页 > Linux > 正文

Linux如何查端口占用情况?

在 Linux中查看 端口占用情况,常用命令:,1. netstat -tuln | grep ,2. lsof -i : ,3. ss -tuln | grep ,若返回结果则被占用,无输出表示空闲。

Linux 系统中,查看端口占用情况是网络管理和故障排查的关键操作,以下是 6 种专业方法及其详细操作指南,适用于所有主流的 Linux 发行版(Ubuntu、CentOS、Debian 等):


方法一:使用 netstat 命令(经典工具)

sudo netstat -tuln | grep ":端口号"

  • 参数解析

    -t(TCP)-u(UDP)-l(仅监听端口)-n(显示数字端口)

  • 示例:检查 80 端口 sudo netstat -tuln | grep ":80"
  • 输出解读 tcp6 0 0 :::80 :::* LISTEN 1234/nginx

    表示 80 端口被 Nginx 进程(PID 1234)占用。

️ 注意:部分新系统需安装 net-tools:sudo apt install net-tools(Debian/Ubuntu)或 sudo yum install net-tools(CentOS/RHEL)

Linux如何查端口占用情况? 第1张


方法二:使用 ss 命令(推荐,更高效)

sudo ss -tuln | grep ":端口号"

  • 优势:比 netstat 更快,直接读取内核数据
  • 示例:检查 3306 端口 sudo ss -tuln | grep ":3306"
  • 输出关键列

    Local Address:Port → 本地监听地址

    Process → 进程名/PID(需加 -p 参数)


️ 方法三:使用 lsof 命令(查看进程详情)

sudo lsof -i :端口号

  • 直接定位进程:显示占用端口的程序路径、用户、PID
  • 示例:检查 22 端口(SSH) sudo lsof -i :22
  • 典型输出: sshd 1234 root 3u IPv4 23456 0t0 TCP *:22 (LISTEN)

    → 进程名:sshd,PID:1234,用户:root

    Linux如何查端口占用情况? 第2张

    方法四:使用 nmap 扫描本地端口

    sudo nmap -sT -p 端口号 localhost

    • 适用场景:验证端口开放状态(即使无监听进程)
    • 安装命令: sudo apt install nmap # Debian/Ubuntu sudo yum install nmap # CentOS/RHEL
    • 示例:扫描 8080 端口 sudo nmap -sT -p 8080 localhost
    • 结果解读

      open → 端口被占用

      closed → 端口未被占用


    方法五:使用 telnet 或 nc 测试连通性

    telnet localhost 端口号 # 或 nc -zv localhost 端口号

    • 间接判断逻辑

      连接成功 → 端口被占用(或有服务响应)

      连接拒绝 → 端口未被占用

    • 示例:测试 6379(Redis) nc -zv 127.0.0.1 6379 Connection to 127.0.0.1 6379 port [tcp/*] succeeded! # 端口占用


    方法六:查看 /proc/net 系统文件

    grep -r ":端口号" /proc/net/tcp /proc/net/udp

    • 底层原理:直接读取内核网络堆栈信息
    • 端口转换

      需将十进制端口转为十六进制(如 80 → 0050)

    • 示例:查找十六进制端口 1F90(8080) grep -r ":1F90" /proc/net/tcp


    最佳实践总结

    场景 推荐命令 优势
    快速检查端口占用 ss -tuln 速度快,无需安装
    需查看进程详细信息 lsof -i :端口号 显示进程路径、用户、PID
    确认端口开放状态 nmap localhost 精确识别过滤状态
    兼容旧系统 netstat -tuln 广泛支持

    操作注意

    1. 普通用户可能无权限查看系统进程,请使用 sudo
    2. 检查 UDP 端口需显式指定 -u 参数(如 ss -uln)
    3. 云服务器需同步检查安全组/防火墙规则


    ️ 端口占用冲突解决方案

    若发现端口被占用,可通过以下步骤释放:

    1. 终止进程: sudo kill -9 PID # 强制终止(根据 lsof/ss 获取的 PID)
    2. 更改服务配置

      修改对应服务的配置文件(如 Nginx 的 /etc/nginx/nginx.conf 中 listen 指令)

    3. 检查僵尸进程: ps aux | grep defunct # 清理僵尸进程释放资源


    引用说明: 基于 Linux 内核文档(kernel.org)及以下工具手册:

    • ss(8) – iproute2 工具集
    • lsof(8) – LiSt Open Files
    • netstat(8) – net-tools 手册
    • nmap(1) – 网络探测工具官方指南

    Linux如何查端口占用情况? 第3张

0