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)
酷番叔酷番叔
上一篇 2天前
下一篇 2天前

相关推荐

  • linux如何用卸载opencv

    Linux中卸载OpenCV,可以使用包管理器。

    2025年8月14日
    700
  • 为什么90%的人早餐都吃错了?

    在Qt中执行Linux命令是开发跨平台应用时的常见需求,尤其在自动化脚本调用、系统管理或硬件交互等场景中,Qt提供了QProcess类作为核心解决方案,它安全、灵活且符合Linux权限管理规范,以下是详细实现方法:核心方法:使用QProcess类QProcess 是Qt中专门用于启动外部进程的类,支持同步/异步……

    2025年8月7日
    1000
  • 1.ls 命令,基础列表查看

    在Linux系统中,查看文件夹内容是最基础且频繁的操作之一,作为多用户、多任务的操作系统,Linux提供了多种高效命令来管理文件系统,以下详细介绍几种核心方法,涵盖基本查看、高级筛选及实用技巧,所有命令均通过实际终端测试(基于Ubuntu 22.04和CentOS 9环境),功能:列出目录内容(默认显示当前目录……

    2025年7月17日
    1800
  • linux如何cd到桌面

    Linux 中,通常桌面路径是 ~/Desktop,可以使用命令

    2025年8月14日
    600
  • Linux访问URL有哪些高效方法?

    命令行工具(高效灵活)适用于服务器管理、自动化脚本或快速测试场景,curl 工具功能:传输数据(支持HTTP/HTTPS/FTP等),显示网页源码或API响应,基础命令: curl https://example.com常用参数:-o 文件名到文件(如 curl -o page.html https://exa……

    2025年7月4日
    2400

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信