Linux如何查端口占用情况?

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

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

Linux如何查端口占用情况?


🔍 方法一:使用 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-toolssudo apt install net-tools(Debian/Ubuntu)或 sudo yum install net-tools(CentOS/RHEL)


⚡ 方法二:使用 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如何查端口占用情况?


🔧 方法四:使用 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 → 端口未被占用

📡 方法五:使用 telnetnc 测试连通性

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.conflisten 指令)
  3. 检查僵尸进程
    ps aux | grep defunct         # 清理僵尸进程释放资源

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

Linux如何查端口占用情况?

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

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

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月7日 05:54
下一篇 2025年6月7日 06:09

相关推荐

  • linux如何替换字符串

    Linux中,替换字符串可用sed命令,如sed -i ‘s/旧字符串/新字符串/g’ 文件名直接修改原文件;也可用awk或perl实现

    2025年7月26日
    3600
  • Linux文件备份简单方法

    Linux系统备份文件常用命令如tar、rsync或cp,推荐使用tar压缩打包重要目录,或rsync同步到本地/远程位置,关键是将备份存储在独立硬盘、网络位置或云存储,并定期验证备份完整性以确保数据安全。

    2025年6月12日
    9000
  • linux 如何去掉注释符号

    Linux 中,去掉注释符号可通过文本编辑工具如 sed、awk 或 tr 等,例如用 sed 命令:`sed ‘s/#.

    2025年8月8日
    1800
  • Linux磁盘分区怎么操作?

    在 Linux 中,主要使用 fdisk(适用于 MBR)和 parted(支持 GPT/MBR)命令进行磁盘分区,gdisk 专用于 GPT 分区,操作前务必卸载目标磁盘并谨慎执行,避免数据丢失。

    2025年6月6日
    2800
  • linux红帽系统如何关屏保

    红帽系统可通过命令 xset s off 或 xset s blank 关闭屏保;若用GNOME桌面,则依次点击“活动概览→设置→电源→休眠与锁定”,取消勾选“自动锁定”。

    2025年8月10日
    18100

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN