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系统如何向文件追加内容?

    在Linux系统中,向文件追加内容是一项基础且高频的操作,无论是日志记录、配置更新还是数据汇总,都离不开对文件的追加写入,与覆盖写入不同,追加操作会在文件末尾保留原有内容并插入新数据,确保数据的连续性和完整性,本文将详细介绍Linux中向文件追加内容的多种方法、适用场景及注意事项,并通过表格对比不同工具的特点……

    2025年8月26日
    11600
  • Linux如何查看U盘?命令行还是图形界面?

    命令行方式(推荐)识别U盘设备插入U盘后,打开终端(Ctrl+Alt+T),执行:lsblk输出示例:NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 238.5G 0 disk├─sda1 8:1 0 512M 0 part /boot└─sda2 8:2 0……

    2025年7月9日
    18400
  • 如何将Linux系统烧录到芯片的具体方法?

    将Linux系统烧录到芯片是嵌入式开发、物联网设备部署或定制化硬件开发中的核心环节,涉及硬件准备、软件环境搭建、镜像制作、烧录执行及后续调试等多个步骤,整个过程需根据芯片架构、存储介质类型及目标设备特性进行调整,以下从基础到进阶详细说明操作流程,硬件准备:明确目标与连接基础烧录Linux前,需确认硬件环境是否就……

    2025年9月27日
    12200
  • 如何查看Linux系统是32位还是64位?

    在Linux系统中,确定系统位数(32位或64位)对于软件安装、系统优化和兼容性排查至关重要,32位系统最大支持4GB内存,而64位系统可支持更大内存空间,且运行效率更高,以下是几种常用且准确的方法来判断Linux系统的位数,涵盖不同场景和需求,使用uname命令查看系统架构uname命令是Linux中基础的系……

    2025年9月8日
    15400
  • Linux安装SCIM输入法遇问题?

    SCIM(Smart Common Input Method)是一个开源的输入法平台,支持中文、日文、韩文等复杂语言的输入,尽管现代Linux发行版多采用IBus或Fcitx5,但部分传统场景仍需SCIM,以下是专业安装流程:安装前的关键准备系统更新终端执行:sudo apt update &&amp……

    2025年7月26日
    14100

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信