网络编程的进程查看连接描述符信息等
一.查看当前进程的socket对应的fd信息
1. lsof
lsof
(List Open Files)命令可以列出系统中所有打开的文件的信息,包括 socket。
用法
要查看特定进程的 socket 信息,可以使用以下命令:
lsof -p <pid> | grep socket <pid>: 要查看的进程的进程 ID。
grep socket: 过滤出 socket 相关的信息。示例
lsof -p 1234 | grep socket
2. netstat
netstat
命令用于显示网络连接、路由表、接口统计等。使用 netstat
可以查看当前进程的 socket 连接。
用法
netstat -anp | grep <pid> 选项说明:
-a: 显示所有连接和监听的端口。
-n: 以数字形式显示地址和端口号。
-p: 显示使用每个 socket 的进程信息。示例
root@192.168.10.114:/proc/8141/fd|⇒ netstat -anp | grep 8141
tcp6 0 0 :::10443 :::* LISTEN 8141/smartapi
unix 3 [ ] STREAM CONNECTED 47938 8141/nn
unix 2 [ ] STREAM CONNECTED 4489953 8141/nn
unix 2 [ ] STREAM CONNECTED 4488523 8141/nn
unix 2 [ ] DGRAM 46849 8141/nn
第一行:TCP6 Socket
tcp6 0 0 :::10443 :::* LISTEN 8141/nntcp6:
表明这是一个 TCP socket,且使用的是 IPv6 协议。0 0:
第一个 0 表示接收队列(recv-q),当前没有待处理的接收数据。
第二个 0 表示发送队列(send-q),当前没有待发送的数据。:::10443:
该 socket 正在监听所有地址(:::)的 10443 端口,表示它可以接收来自任何 IPv6 地址的连接请求。:::*:
远程地址,该项显示为 * 表示没有特定的远程地址,因为 LISTEN 状态的 socket 不会连接到特定的远程主机。LISTEN:
表明这个 socket 是处于监听状态,准备接受连接。8141/nn:
显示使用该 socket 的进程信息。这里的 8141 是进程 ID,而 nn 是进程的名称。
第二到第五行:UNIX Socket
unix 3 [ ] STREAM CONNECTED 47938 8141/nn
unix 2 [ ] STREAM CONNECTED 4489953 8141/nn
unix 2 [ ] STREAM CONNECTED 4488523 8141/nn
unix 2 [ ] DGRAM 46849 8141/nn 每行的结构相似,逐行分析:通用部分解释
unix:
表示这一行信息涉及 Unix Domain socket。3 / 2 / 2 / 2:
这些数字表示接收和发送队列的长度。
第一个数字是接收队列中待处理的数据包数量,第二个数字(如果有)表示发送队列中的数据包数量。[ ]:
表示当前没有特定的数据在接收队列中也没有存储其他状态的信息。STREAM / DGRAM:
指明 socket 的类型。
STREAM 表示这是一个流式 socket(用于 TCP 样式的连接)。
DGRAM 表示这是一个数据报式 socket(用于 UDP 样式的连接)。CONNECTED:
该状态指示 socket 已建立连接。47938, 4489953, 4488523, 46849:
显示与该 Unix socket 相关的文件描述符(FD)。这些是文件描述符在进程内部的标识符。8141/nn:
使用该 socket 的进程的信息,显示进程 ID 是 8141,进程名称为 smartapi。
具体分析
第一行(TCP6 设置):
正在监听 IPv6 中的 port 10443,准备接受来自任何地址的连接。第二行:
一个流式 Unix socket 连接,接收队列中有 3 个待处理数据,进程 smartapi 使用 FD 47938。第三行:
另一个流式 Unix socket 连接,接收队列中有 2 个待处理数据,进程使用 FD 4489953。第四行:
第三个流式 Unix socket 连接,接收队列中有 2 个待处理数据,进程使用 FD 4488523。第五行:
一个数据报式 (DGRAM) Unix socket,连接状态为未填充接收队列,进程使用 FD 46849。总结
从输出中可以看出,nn 进程同时使用了一些 TCP 和 Unix socket,
包括监听 TCP 连接和若干个已建立的 Unix Domain socket 连接。
Unix sockets 通常在同一台机器的进程之间进行高效的通信。
3. ss
ss
是 netstat
的替代工具,提供更详细的 socket 统计信息,速度更快。
用法
ss -p | grep <pid> -p: 显示使用 socket 的进程信息。示例:
root@192.168.10.114:/proc/8141/fd|⇒ ss -p | grep 8141
u_str ESTAB 0 0 * 47938 * 47939 users:(("smartapi",pid=8141,fd=20))
u_str ESTAB 0 0 * 4489953 * 0 users:(("smartapi",pid=8141,fd=10))
u_str ESTAB 0 0 * 4488523 * 0 users:(("smartapi",pid=8141,fd=5))
输出解析
- LISTEN / ESTAB: 显示 socket 的状态,
LISTEN
表示正在监听,ESTAB
表示已建立连接。 - 0 / 128: 表示队列的长度。
*:47938
: 表示绑定的地址和端口。users:(...)
: 显示使用该 socket 的进程信息,包括进程名称、PID 和文件描述符(fd)。
一步查看特定 socket 的信息
要详细查看某个 socket 的文件描述符信息,您可以定位到 /proc/<pid>/fd
目录(其中 <pid>
是进程 ID),然后列出文件描述符。
ls -l /proc/1234/fd
4. 使用 ss
命令与 less
首先,可以使用 ss
命令获取 socket 信息,然后通过管道将输出结果传给 less
。
假设您要查看所有进程的 socket 信息:
ss -ap | less -a: 显示所有 socket,包括监听和已连接的 socket。
-p: 显示使用 socket 的进程信息。
如果您只希望查看特定进程的 socket 信息,可以根据名为特定进程的关键字过滤:
ss -ap | grep <process_name> | less <process_name>: 要查看的进程名称。
示例查找特定进程
u_str ESTAB 0 0 * 47938 * 47939 users:(("nn",pid=8141,fd=20))
u_str ESTAB 0 0 * 4489953 * 0 users:(("nn",pid=8141,fd=10))
u_str ESTAB 0 0 * 4488523 * 0 users:(("nn",pid=8141,fd=5))
u_dgr UNCONN 0 0 * 46849 * 47423 users:(("nn",pid=8141,fd=6))
u_dgr UNCONN 0 0 * 26270 * 0 users:(("nn",pid=8141,fd=3),("nn",pid=2159,fd=3))
u_dgr UNCONN 0 0 * 31283 * 0 users:(("nn",pid=2159,fd=6))
u_str ESTAB 0 0 * 26318 * 0 users:(("nn",pid=2159,fd=5))
tcp LISTEN 0 128 [::]:10443 [::]:* users:(("n",pid=8141,fd=19))
解析:
逐部分解析
u_dgr:
这一部分表示 Socket 的类型和协议。u_dgr: 表示使用 Unix Domain Datagram(UDP)类型的 socket。Unix Domain sockets 允许在同一台机器上的进程之间进行通信。UNCONN:
这表示 socket 的状态。
UNCONN(Unconnected)表示这个 socket 仍然未连接。对于 UDP 类型的 sockets 来说,连接状态通常不如 TCP 重要,但这仍表明这个 socket 并没有处于激活状态来接收或发送数据。0 0:
这两个数字分别代表接收队列和发送队列的长度。
0 表示接收队列中没有待处理的数据,0 也表示发送队列中没有等待发送的数据。* 46849:
这是本地地址和本地端口。
* 表示这个 socket 监听所有的地址(即可以接收来自所有 IP 的连接)。
46849 是本地端口号。* 47423:
这是远程地址和远程端口。
同样,* 表示远程地址(即远程 IP),而 47423 是远程端口号。对于 UDP sockets,这个信息显示的是接收的通信地址。users:(("nn",pid=8141,fd=6)):
这一部分显示使用该 socket 的进程信息。
("nn", pid=8141, fd=6) 具体表示:
nn: 是使用这个 socket 的进程名称。
pid=8141:表示进程的 ID。
fd=6:表示进程中的文件描述符(File Descriptor)编号,这里的数字 6 是该 socket 在进程中被引用的文件描述符。
5. 使用 /proc
文件系统与 less
如果您知道进程 ID,可以直接从 /proc
文件系统查看 socket 的详细信息。
示例
less /proc/<pid>/net/tcp
- 这将显示 TCP sockets 的详细信息,包括本地地址、远程地址等。
6.其他
使用 netstat
命令可以检查系统中某个特定端口或 IP 地址的状态。以下是一些常用的选项和示例,教您如何使用 netstat
来查看端口或 IP 的状态。
基本用法
1. 查看所有连接和监听状态
要查看所有连接和监听的端口,可以运行以下命令:
netstat -an -a: 显示所有连接和监听的socket。
-n: 以数字形式显示地址和端口号。
2. 查看特定端口的状态
假设您想查看端口 10443 的状态,您可以使用以下命令:
netstat -an | grep :10000
这条命令会输出与端口 10000 相关的所有连接及其状态。
3. 查看特定 IP 的状态
若您想查看与特定 IP 地址(例如 192.168.1.100)的连接,可以使用:
netstat -anp | grep :10443 -p: 显示使用每个 socket 的进程信息,包括进程 ID 和名称。
5. 查看 TCP 和 UDP 状态
如果您只想查看 TCP 或 UDP 连接,您可以分别使用:
netstat -at # 查看 TCP 连接
netstat -au # 查看 UDP 连接
示例输出解析
假设我们运行以下命令来查看端口 10000 的状态:
netstat -an | grep :10000
可能的输出结果:
tcp6 0 0 :::10000 :::* LISTEN tcp6: 表示这是一个 IPv6 TCP socket。
0 0: 接收队列和发送队列的长度(都为 0)。
:::10443: 表示监听所有地址的 10000 端口。
LISTEN: 表示该端口当前处于监听状态。
7. 查看所有连接和其进程信息
首先,可以通过 netstat
查看当前系统上所有活动的 TCP 和 UDP 连接,以及它们对应的进程:
-t: 显示 TCP 连接。
-u: 显示 UDP 连接。
-n: 以数字方式显示地址和端口号。
-a: 显示所有连接(包括监听状态的 socket)。
-p: 显示使用每个 socket 的进程信息。
2. 查看特定进程的连接信息
如果您想查看特定进程的连接信息,可以使用 grep
命令来过滤出该进程的名称或进程 ID(PID)。
假设您想查看进程名称为 nn的连接信息:
netstat -tunap | grep nn
或者,如果你知道进程的 PID,例如 8141:
netstat -tunap | grep 8141
示例输出解析
运行上述命令后,您可能会看到类似的输出:
tcp 0 0 192.168.1.5:10000 192.168.1.100:54321 ESTABLISHED 8141/nn
udp 0 0 192.168.1.5:1234 0.0.0.0:* 8141/nntcp 或 udp: 表示连接的类型。
0 0: 表示接收和发送队列的长度。
192.168.1.5:10000: 本地地址和本地端口。
192.168.1.100:54321: 远程地址和远程端口(仅在 TCP 连接中显示)。
ESTABLISHED: 表示连接的状态。
8141/nn: 使用该连接的进程 ID 和名称。
相关文章:
网络编程的进程查看连接描述符信息等
一.查看当前进程的socket对应的fd信息 1. lsof lsof(List Open Files)命令可以列出系统中所有打开的文件的信息,包括 socket。 用法 要查看特定进程的 socket 信息,可以使用以下命令: lsof -p <pid> | grep…...
ChatGPT API快速搭建自己的第一个应用—文章摘要(单轮对话应用)
使用ChatGPT API快速搭建自己的第一个应用 1 安装库2 设置与导入3 文章摘要(单轮对话应用)3.1 任务简介:3.2 初始化3.3 点击发送3.4 保存3.5 检查并打印你的结果1 安装库 !pip install gradiogradio 是一个用于快速搭建交互式用户界面的 Python 库,特别适合展示机器学习模…...

【01】AE特效开发制作特技-Adobe After Effects-AE特效制作快速入门-制作飞机,子弹,爆炸特效以及导出png序列图-优雅草央千澈
【01】AE特效开发制作特技-Adobe After Effects-AE特效制作快速入门-制作飞机,子弹,爆炸特效以及导出png序列图-优雅草央千澈 开发背景 优雅草央千澈所有的合集,系列文章可能是不太适合完全初学者的,因为课程不会非常细致的系统…...

软件测试预备知识④—NTFS权限管理、磁盘配额与文件共享
在软件测试的实际环境搭建与管理过程中,了解和掌握NTFS权限管理、磁盘配额以及文件共享等知识至关重要。这些功能不仅影响系统的安全性和稳定性,还对测试数据的存储、访问以及多用户协作测试有着深远的影响。 一、NTFS权限管理 1.1 NTFS简介 NTFS&am…...

CI/CD 流水线
CI/CD 流水线 CI 与 CD 的边界CI 持续集成CD(持续交付/持续部署)自动化流程示例: Jenkins 引入到 CI/CD 流程在本地或服务器上安装 Jenkins。配置 Jenkins 环境流程设计CI 阶段:Jenkins 流水线实现CD 阶段:Jenkins 流水…...
【python3】 sqlite格式的db文件获得所有表和数据
【python3】 sqlite格式的db文件获得所有表和数据 1.背景2.代码3.解析1.背景 SQLite 格式的 .db 文件就是一个包含 SQLite 数据库的文件。 SQLite 格式的 .db 文件通常存储的是一个关系型数据库。 SQLite广泛用于应用程序、移动设备、浏览器等场景。它将整个数据库存储在一个文…...

【灵码助力安全3】——利用通义灵码辅助智能合约漏洞检测的尝试
前言 随着区块链技术的快速发展,智能合约作为去中心化应用(DApps)的核心组件,其重要性日益凸显。然而,智能合约的安全问题一直是制约区块链技术广泛应用的关键因素之一。由于智能合约代码一旦部署就难以更改…...

openEuler 22.04使用yum源最快速度部署k8s 1.20集群
本文目的 openEuler的官方源里有kubernetes 1.20,使用yum源安装是最快部署一个k8s集群的办法 硬件环境 主机名系统架构ipmasteropenEuler release 22.03 (LTS-SP2)arm192.168.3.11edgeopenEuler release 22.03 (LTS-SP2)arm192.168.3.12deviceopenEuler release 22.…...
Docker Compose 教程
Docker Compose 是一个 Docker 容器的依赖管理工具。 例如我们一个服务需要依赖到多个 Docker 容器,那么使用 Docker Compose 这个工具就能很方便的帮助我们管理。 Docker Compose 通过配置文件 .yml。 定义了所有容器的依赖关系。 然后我们只需把我们想要的 Docke…...

opencv的NLM去噪算法
NLM(Non-Local Means)去噪算法是一种基于图像块(patch)相似性的去噪方法。其基本原理是: 图像块相似性:算法首先定义了一个搜索窗口(search window),然后在该窗口内寻找…...
scala基础学习_方法函数
文章目录 方法与函数函数(又称函数值/匿名函数)定义方法注意 单参数函数多参数函数函数作为参数传递 方法将方法转换为函数方法的返回值总结 方法与函数 函数(又称函数值/匿名函数) 定义在任何地方:函数可以定义在类…...

Android车机DIY开发之软件篇(八)单独编译
Android车机DIY开发之软件篇(八)单独编译 1.CarLauncher单独编译 CarLauncher源码位于 packages/apps/Car/Launcher 用Eclipse ADT 谷歌定制版编译而成,.mk .bp编译 Android13目录如下: alientekalientek:~/packages/apps/Car$ ls Calendar …...
【Bug】报错信息:Required request body is missing(包含五种详细解决方案)
大家好,我是摇光~ 遇到“Required request body is missing”错误通常意味着服务器期望在HTTP请求中包含一个请求体(body),但是实际上并没有收到。 例如: 当你在使用网页或应用程序的后台(比如一个网站或手…...
Docker 专栏 —— Dockerfile 指令详解
文章目录 ADD 复制文件COPY 复制文件ARG 设置构建参数CMD 容器启动命令ENTRYPOINT ⼊⼝点ENV 设置环境变量EXPOSE 声明暴露的端⼝FROM 指定基础镜像LABEL 为镜像添加元数据MAINTAINER 指定维护者的信息RUN 执⾏命令USER 设置⽤户VOLUME 指定挂载点WORKDIR 指定⼯作⽬录 ADD 复制…...

Spring Boot 项目自定义加解密实现配置文件的加密
在Spring Boot项目中, 可以结合Jasypt 快速实现对配置文件中的部分属性进行加密。 完整的介绍参照: Spring Boot Jasypt 实现application.yml 属性加密的快速示例 但是作为一个技术强迫症,总是想着从底层开始实现属性的加解密,…...

在ubuntu下对NFS做性能测试
安装NFS 首先,安装服务 sudo apt update sudo apt install nfs-kernel-server然后创建共享文件夹 # 请自定义你自己的共享目录 sudo mkdir -p /exports/nfs4/homes sudo chmod -R 777 /exports/nfs4/homes# 这个可以根据no_root_squash标致选择设置。 # 如果不设…...
Spring-Cloud-Gateway-Samples,nacos为注册中心,负载均衡
背景:本想找个简单例子看下,无奈版本依赖太过复杂,花了点时间。记录下吧 使用Spring Cloud Gateway作为网关服务,Nacos作为注册中心,实现对子服务的负载均衡访问。简单例子。 一、gateway-main-nacos服务端ÿ…...

StarRocks Awards 2024 年度贡献人物
在过去一年,StarRocks 在 Lakehouse 与 AI 等关键领域取得了显著进步,其卓越的产品功能极大地简化和提升了数据分析的效率,使得"One Data,All Analytics" 的愿景变得更加触手可及。 虽然实现这一目标的道路充满挑战且漫…...
Autoencoder(李宏毅)机器学习 2023 Spring HW8 (Boss Baseline)
1. Autoencoder 简介 Autoencoder是一种用于学习数据高效压缩表示的人工神经网络。它由两个主要部分组成: Encoder 编码器将输入数据映射到一个更小的、低维空间中的压缩表示,这个空间通常称为latent space或bottleneck。 这一过程可以看作是数据压缩,去除冗余信息,仅保留…...
深入探索 ScottPlot.WPF:在 Windows 桌面应用中绘制精美图表的利器
一、ScottPlot.WPF 简介 ScottPlot.WPF 是基于 ScottPlot 绘图库专门为 Windows Presentation Foundation (WPF) 框架量身定制的强大绘图组件。它无缝集成到 WPF 应用程序中,为开发者提供了一种简洁、高效的方式来可视化数据,无论是科学研究中的实验数据展示、金融领域的行情…...

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
WEB3全栈开发——面试专业技能点P7前端与链上集成
一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...