Linux如何查看网络端口状态及占用情况?

在Linux系统中,网络端口管理是系统运维和开发中的核心任务之一,无论是排查服务是否正常监听、诊断端口冲突,还是进行安全审计,都需要掌握查看网络端口的方法,Linux提供了多种命令和工具来查看端口状态、关联进程及详细信息,下面将详细介绍这些工具的使用方法及适用场景。

linux如何查看网络端口

使用netstat命令查看端口

netstat是传统的网络工具,虽然在新版Linux中逐渐被ss替代,但在旧系统或兼容性场景中仍广泛使用,它通过读取/proc文件系统和内核信息,展示网络连接、路由表、接口统计等数据。

基本语法

netstat [选项] [协议]

常用选项及示例

  • 查看所有监听端口(TCP/UDP)

    netstat -tuln

    选项说明:-t显示TCP端口,-u显示UDP端口,-l仅显示监听状态端口,-n以数字形式显示地址和端口(避免DNS解析,加快速度)。
    输出示例:

    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
    tcp6       0      0 :::80                   :::*                    LISTEN     
    udp        0      0 0.0.0.0:68              0.0.0.0:*                          

    其中Local Address为本地IP和端口,State为端口状态(LISTEN表示监听中)。

  • 查看所有端口(包括非监听)及进程ID

    netstat -tulnp

    选项-p显示占用端口的进程ID(PID)和名称,便于定位问题进程。

  • 查看指定端口的连接状态

    netstat -an | grep :80

    通过grep过滤特定端口(如80端口),查看所有连接及其状态(如ESTABLISHED表示已建立连接)。

使用ss命令查看端口(推荐)

ssiproute2包中的工具,旨在替代netstat,性能更高(尤其是连接数多时),且支持更多TCP状态和统计信息,现代Linux发行版(如Ubuntu 18.04+、CentOS 7+)默认已安装。

基本语法

ss [选项] [协议]

常用选项及示例

  • 查看所有监听端口

    ss -tuln

    选项与netstat类似,-t/-u/-l/-n含义相同,输出示例:

    State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
    LISTEN     0      511          0.0.0.0:22              0.0.0.0:*                  
    LISTEN     0      4096             :::80                   :::*                   

    字段说明:State为端口状态,Local Address:Port为本地IP和端口。

    linux如何查看网络端口

  • 查看监听端口及进程信息

    ss -tulpn

    选项-p显示进程PID和名称,

    State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
    LISTEN     0      511          0.0.0.0:22              0.0.0.0:*      users:(("sshd",pid=1234,fd=3))  

    可直接看到sshd进程占用22端口。

  • 查看TCP连接状态统计

    ss -s

    输出TCP/UDP连接总数、监听端口数等统计信息,快速了解网络负载。

使用lsof命令查看端口关联进程

lsof(list open files)用于列出系统打开的文件,在Linux中,网络端口被视为文件,因此可通过lsof查看端口与进程的关联关系。

基本语法

lsof [选项] [名称]

常用选项及示例

  • 查看指定端口的进程

    lsof -i :80

    80表示80端口,输出示例:

    COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    nginx     567   root    6u  IPv4   12345      0t0  TCP *:http (LISTEN)
    nginx     568   www-data 7u  IPv4   12345      0t0  TCP *:http (LISTEN)

    可看到nginx进程(PID 567/568)占用80端口,LISTEN表示监听状态。

  • 查看所有监听端口及进程

    lsof -i -P -n | grep LISTEN

    选项-P显示端口号而非服务名,-n避免DNS解析,grep LISTEN过滤监听状态。

通过/proc文件系统查看端口

/proc是Linux内核提供的虚拟文件系统,包含系统运行时的实时信息,可直接读取网络端口数据。

linux如何查看网络端口

查看TCP/UDP端口

  • TCP端口

    cat /proc/net/tcp
    cat /proc/net/tcp6  # IPv6

    输出为十六进制格式,需转换IP和端口(如0A0000010.0.10016为22端口)。

  • UDP端口

    cat /proc/net/udp
    cat /proc/net/udp6  # IPv6

关联进程

通过inode号查找进程:

  1. /proc/net/tcp中获取端口的inode号(第10列);
  2. /proc/*/fd/中搜索该inode
    find /proc -name fd -exec ls -l {} ; 2>/dev/null | grep inode号

    输出中的/proc/PID/fd/文件描述符即为占用该端口的进程文件。

工具对比与选择

工具名称 所属软件包 推荐场景 核心优势 常用参数组合
netstat net-tools 旧系统兼容 命令简单,广泛支持 -tuln(监听端口)、-tulnp(进程信息)
ss iproute2 新系统首选 性能高,支持更多TCP状态 -tulpn(监听+进程)、-s(统计)
lsof lsof 精准定位进程 直接关联端口与进程,支持文件类型过滤 -i :端口(指定端口)、-iTCP -sTCP:LISTEN(TCP监听)
/proc 内置 底层调试 无需安装,数据实时 /proc/net/tcp(TCP端口)、find(关联进程)

相关问答FAQs

问题1:为什么推荐使用ss而不是netstat查看端口?
解答:ssnetstat的升级版,通过Netlink接口直接从内核获取网络信息,避免了netstat/proc/dev文件的遍历,因此在连接数较多时(如高并发服务器)性能优势显著。ss支持更多TCP状态(如NETLINKPACKET等),输出信息更详细,且现代Linux发行版默认集成,是当前查看网络端口的首选工具。

问题2:如何查看指定进程占用的所有端口?
解答:可通过lsofss结合进程ID(PID)实现。

  • 使用lsof
    lsof -p <PID> -i

    例如查看PID 1234的进程占用的端口:lsof -p 1234 -i,输出会列出该进程所有网络连接及端口。

  • 使用ss
    ss -tulpn | grep <PID>

    例如ss -tulpn | grep 1234,可显示PID 1234占用的端口及监听状态。

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

(0)
酷番叔酷番叔
上一篇 2025年8月22日 00:54
下一篇 2025年8月22日 01:24

相关推荐

  • Linux下so文件如何正确拷贝与处理依赖问题?

    在Linux系统中,.so文件(Shared Object,共享目标文件)是动态链接库,相当于Windows下的.dll文件,程序运行时需要动态加载这些库以实现功能扩展,当需要在不同系统、不同目录或不同环境中部署程序时,拷贝.so文件是常见操作,但并非简单的“复制粘贴”,需考虑文件定位、依赖关系、路径配置等关键……

    2025年10月7日
    7700
  • Linux系统如何升级Java版本升级包?

    在Linux系统中升级Java版本是常见运维任务,涉及版本确认、下载安装、环境变量配置等步骤,不同发行版(如Ubuntu、CentOS)和安装方式(手动安装、包管理器)操作略有差异,需结合实际场景选择合适方法,以下是详细操作流程及注意事项,升级前的准备工作确认当前Java版本执行java -version查看系……

    2025年9月10日
    9500
  • Linux C程序如何升级?方法步骤详解

    Linux C程序升级是系统维护和功能迭代中的常见任务,涉及版本管理、依赖处理、编译部署等多个环节,合理的升级流程能确保程序稳定运行,同时引入新功能或修复漏洞,以下从升级前准备、具体实施步骤到后续验证,详细说明Linux C程序的升级方法,升级前规划与准备在开始升级前,需明确升级目标并评估风险,确认当前程序的版……

    2025年9月21日
    10300
  • linux如何创建.py文件

    在Linux操作系统中,Python脚本(.py文件)是自动化任务、开发应用程序的重要工具,创建.py文件的过程涉及文本编辑、权限设置、编码规范等多个环节,掌握正确的方法能提升开发效率,本文将详细介绍Linux环境下创建.py文件的多种方式、操作步骤及注意事项,创建.py文件的基础准备在创建.py文件前,需确保……

    2025年9月22日
    8400
  • SQLPlus连接Oracle数据库技巧

    准备工作安装Oracle客户端官方客户端选择:完整客户端:适用于长期使用(官网下载)Instant Client:轻量级方案(推荐基础包+SQL*Plus)安装步骤(以Instant Client为例):# 解压安装包unzip instantclient-basic-linux.x64-19.13.0.0.0……

    2025年7月12日
    10400

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信