0

0

Linux下查看Socket状态信息及利用/proc/file监控连接数

冷漠man

冷漠man

发布时间:2026-03-15 08:19:04

|

915人浏览过

|

来源于php中文网

原创

Linux中查看Socket连接状态最直接方式是读取/proc/net/下的tcp、udp、unix等文件统计全局连接,结合/proc/[pid]/fd/定位进程级socket,需注意权限限制和inode匹配。

linux下查看socket状态信息及利用/proc/file监控连接数

在 Linux 系统中,查看 Socket 连接状态和实时监控连接数,最直接有效的方式是结合 /proc/net/ 下的接口文件与进程级的 /proc/[pid]/fd/ 目录。这些路径不依赖外部工具,稳定、轻量,适合脚本化和故障排查。

通过 /proc/net/ 查看全局 Socket 状态

/proc/net/ 是内核暴露网络协议栈状态的虚拟文件系统入口,常用文件包括:

  • /proc/net/tcp/proc/net/tcp6:分别显示 IPv4 和 IPv6 的 TCP 连接(含监听、ESTABLISHED、TIME_WAIT 等状态)
  • /proc/net/udp/proc/net/udp6:UDP 套接字(无连接状态,但可查绑定端口和接收队列)
  • /proc/net/unix:本地 Unix 域套接字(含路径、类型、引用计数、连接状态)

每行字段含义需对照内核文档理解。例如 /proc/net/tcp 中第 4 列为十六进制状态码(01 表示 ESTABLISHED,0A 表示 LISTEN),可用 awk + 十六进制转义快速过滤:

awk '$4 == "01" {print $0}' /proc/net/tcp | wc -l  # 统计当前 ESTABLISHED 连接数

按进程查看 Socket 文件描述符

每个进程的打开文件(含 socket)记录在 /proc/[pid]/fd/ 中。socket 类型的 fd 会以 socket:[inode号] 形式软链接指向:

ls -l /proc/1234/fd/ | grep socket

配合 /proc/net/{tcp,unix} 中的 inode 列,可精准定位某进程打开了哪些 socket。例如:

百度AI搜
百度AI搜

百度全新AI搜索引擎

下载
# 查出进程 1234 所有 socket 的 inode 号
ls -l /proc/1234/fd/ | awk '/socket/ {gsub(/[^0-9]/,"",$11); print $11}' | sort -u
<h1>在 /proc/net/tcp 中匹配这些 inode(第10列)</h1><p>awk 'NR==FNR{a[$1]=1;next} $10 in a' <(上述命令输出) /proc/net/tcp

用 /proc/net/ 统计连接数趋势

连接数突增或泄漏常表现为 TIME_WAIT 过多、已连接数飙升或端口耗尽。可编写简单脚本定时采样:

#!/bin/bash
while true; do
  echo "$(date '+%H:%M:%S') $(awk '$4=="01"{c++} END{print c+0}' /proc/net/tcp) ESTABLISHED"
  sleep 2
done

也可用 ss -s(更高效)作对比验证:ss -s 输出中的 “TCP:” 行即汇总自 /proc/net/tcp,但解析更快、支持状态过滤(如 ss -tan state established | wc -l)。

注意权限与稳定性

/proc/net/ 文件对所有用户可读(除非启用了严格的安全模块),但 /proc/[pid]/fd/ 需要能访问对应进程(通常要求同用户或 root)。非 root 用户无法查看其他用户的 socket fd;若看到 Permission denied,说明权限不足或进程已退出(fd 目录消失)。另外,/proc 是实时虚拟文件系统,内容随内核状态动态更新,无需刷新缓存,但也不支持 seek 或 mmap 操作。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1973

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

658

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2406

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

48

2026.01.19

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

448

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

606

2023.08.10

tcp和udp的区别
tcp和udp的区别

TCP和UDP的区别,在连接性、可靠性、速度和效率、数据报大小以及适用场景等方面。本专题为大家提供tcp和udp的区别的相关的文章、下载、课程内容,供大家免费下载体验。

126

2023.07.25

udp是什么协议
udp是什么协议

UDP是OSI参考模型中一种无连接的传输层协议。本专题为大家带来udp是什么协议的相关文章,免费提供给大家。

302

2023.08.08

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

49

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.7万人学习

Git 教程
Git 教程

共21课时 | 4.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号