Linux 查看进程端口占用命令整理

文章目录

  • [🚀 1. ss 命令(现代系统首选)](#🚀 1. ss 命令(现代系统首选))
  • [🔍 2. lsof 命令(定位进程最直观)](#🔍 2. lsof 命令(定位进程最直观))
  • [📜 3. netstat 命令(传统兼容方案)](#📜 3. netstat 命令(传统兼容方案))
  • [💡 总结与建议](#💡 总结与建议)

在 Linux 系统中,查看进程端口占用情况是日常运维和开发调试中非常高频的操作。最常用且高效的命令主要有三个: sslsofnetstat

下面为你详细拆解这三个命令的用法、返回结果以及每个字段的含义。

🚀 1. ss 命令(现代系统首选)

ss (Socket Statistics) 是目前 Linux 系统中最推荐的工具,它比传统的 netstat 速度更快、性能更高,能直接显示内核级的套接字信息。

  • 常用命令

    • 查看所有正在监听的 TCP/UDP 端口:sudo ss -tuln
    • 精准查找特定端口(如 8080)并显示占用进程sudo ss -tulnp | grep :8080
  • 参数含义

    • -t:仅显示 TCP 协议的端口。
    • -u:仅显示 UDP 协议的端口。
    • -l:仅显示处于监听(LISTEN)状态的端口。
    • -n:以数字形式显示端口号(不进行域名或服务名解析,速度更快)。
    • -p:显示占用端口的进程 PID 和名称(注意: 此参数通常需要 sudo 权限才能看到完整信息)。
  • 返回结果示例与解读

    text 复制代码
    Netid  State   Recv-Q  Send-Q   Local Address:Port   Peer Address:Port  Process
    tcp    LISTEN  0       128            *:8080              *:*        users:(("java",pid=12345,fd=52))
    • Netid:协议类型(如 tcp, udp)。
    • State :连接状态,LISTEN 表示该端口正在被监听等待连接。
    • Local Address:Port :本地监听的地址和端口。*:8080 表示在所有网卡上监听 8080 端口。
    • Process :占用该端口的具体进程信息。users:(("java",pid=12345,fd=52)) 代表是名为 java 的程序占用了该端口,其进程 ID (PID) 为 12345

🔍 2. lsof 命令(定位进程最直观)

lsof (List Open Files) 的核心逻辑是"在 Linux 中万物皆文件",网络端口也被视为一种文件。它的输出非常直观,特别适合用来反查是哪个程序占用了端口。

  • 常用命令

    • 查看指定端口(如 8080)被谁占用sudo lsof -i :8080
    • 查看所有正在监听的端口:sudo lsof -i -P -n | grep LISTEN
  • 参数含义

    • -i:列出符合条件的网络连接。
    • -P:禁止将端口号转换为服务名称(比如不把 80 显示为 http)。
    • -n:禁止将 IP 地址转换为主机名(避免 DNS 解析卡顿)。
  • 返回结果示例与解读

    text 复制代码
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    nginx    1234 root    6u  IPv4  12345      0t0  TCP *:http (LISTEN)
    • COMMAND :占用端口的进程/程序名称(如 nginx)。
    • PID :进程 ID(如果想强制结束该进程,可以直接使用 kill -9 1234)。
    • USER:运行该进程的系统用户。
    • NAME :显示协议、IP 和端口状态,(LISTEN) 同样代表正在监听。

📜 3. netstat 命令(传统兼容方案)

netstat 是最经典的网络统计工具。不过在很多较新的 Linux 发行版(如 Ubuntu 20.04+、CentOS 8+)中已被标记为过时或默认未安装。如果你的系统没有这个命令,可以通过 sudo apt install net-toolssudo yum install net-tools 来安装。

  • 常用命令

    • 查看所有监听端口及进程:sudo netstat -tulnp
    • 过滤特定端口(如 3306)sudo netstat -tulnp | grep 3306
  • 参数含义

    • -t / -u / -l / -n / -p 的含义与 ss 命令完全一致。
  • 返回结果示例与解读

    text 复制代码
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      5678/mysqld
    • Proto:使用的协议(TCP 或 UDP)。
    • Local Address :本地 IP 和端口。0.0.0.0:3306 表示监听本机所有 IPv4 地址的 3306 端口。
    • State :端口状态,LISTEN 为监听中。
    • PID/Program name :直接展示了进程 ID 和程序名(例如 5678/mysqld 表示 PID 为 5678 的 MySQL 数据库服务)。

💡 总结与建议

在日常排查中,建议优先使用 ss 命令,因为它响应最快且是现代系统的标配;如果你需要非常清晰地看到是哪个用户、哪个具体程序文件占用了端口,lsof 的输出格式会更加友好。

相关推荐
gsls2008088 小时前
Penpot Docker 部署与 MCP 服务配置文档
运维·docker·容器·原型·penpot
九硕智慧建筑一体化厂家8 小时前
直流智能照明|全场景节能升级!打造安全低碳的智慧建筑光环境
运维·笔记·安全·智慧城市
蓝速科技8 小时前
蓝速科技丨数智人终端选型指南:后台运维如何决定长期运营成本
运维·科技
奇树谦8 小时前
HDD 为什么适合顺序大文件读写:从 RAID 5 到 RAID 50 的原理与性能分析
linux·运维·网络
hi_ro_a9 小时前
Linux基础开发工具详解
linux·运维·服务器
嵌入式阿蔡9 小时前
Linux_01:交叉编译与开发环境实战——从单片机跨到 Linux 的第一道坎
linux·运维·网络·单片机·嵌入式硬件·嵌入式实时数据库
风静如云9 小时前
Openssl:Win11(Chrome)安装客户端证书
服务器
風穆9 小时前
OopsVPS:多云 VPS 比价平台的十大核心优势
大数据·服务器·云服务器·oopsvps
Pocker_Spades_A9 小时前
终端里也能斗地主:Linux部署Ratel,从本地对战到公网联机
linux·运维·服务器
佳児素花痴╮10 小时前
C语言链接库
linux·运维·服务器