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命令查看端口(推荐)

ss是iproute2包中的工具,旨在替代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和端口(如0A000001为0.0.1,0016为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查看端口?
解答:ss是netstat的升级版,通过Netlink接口直接从内核获取网络信息,避免了netstat对/proc和/dev文件的遍历,因此在连接数较多时(如高并发服务器)性能优势显著。ss支持更多TCP状态(如NETLINK、PACKET等),输出信息更详细,且现代Linux发行版默认集成,是当前查看网络端口的首选工具。

问题2:如何查看指定进程占用的所有端口?
解答:可通过lsof或ss结合进程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

相关推荐

  • 如何快速拓展人脉?

    访问前的准备工作确保 MySQL 服务已运行 sudo systemctl status mysql # 检查服务状态sudo systemctl start mysql # 若未运行则启动服务获取有效账户信息需准备 MySQL 用户名和密码(默认管理员账户为 root),新安装的 MySQL 可通过临时密码登……

    2025年6月27日
    21200
  • 熬夜真的会导致猝死吗?

    在Linux系统中,子进程的管理是进程控制的核心任务之一,正确关闭子进程不仅能释放系统资源,还能避免僵尸进程(Zombie Process)积累导致的内存泄漏和系统性能下降,本文将详细解释关闭子进程的四种方法、常见问题及最佳实践,为什么需要主动关闭子进程?资源释放:子进程退出后,内核会保留其退出状态(PID、退……

    2025年7月31日
    25000
  • 为什么我的Ubuntu启动这么慢?

    核心方法:使用命令行工具readelf 命令(推荐)readelf -d /path/to/libexample.so | grep SONAME输出示例:0x000000000000000e (SONAME) Library soname: [libexample.so.1]说明:libexample.so……

    2025年7月28日
    20900
  • 电脑上如何安装linux系统

    在电脑上安装Linux系统是许多用户追求个性化、安全性和高效办公的选择,无论是开发者、技术爱好者还是普通用户,都能通过合适的安装方式体验Linux的魅力,本文将详细介绍三种主流安装方法:虚拟机安装、双系统安装和U盘安装,并附发行版选择指南和注意事项,帮助新手顺利完成部署,Linux安装前的准备工作在动手安装前……

    2025年8月28日
    28100
  • Linux服务器网速慢如何测试排查原因及方法?

    在Linux服务器运维中,网速慢是常见问题,可能涉及网络配置、系统资源、硬件故障或外部链路等多个维度,要准确排查网速慢的问题,需结合系统工具、网络测试命令和监控手段,逐步定位瓶颈,以下从基础排查到深度分析,详细说明Linux服务器测网速慢的排查方法和工具使用,初步定位问题范围首先需明确“网速慢”的具体场景:是服……

    2025年10月9日
    35300

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信