Linux怎么查看进程打开的Pipe管道 Linux下lsof -p关联进程详解

陌杰君_7207

陌杰君_7207

2026-05-21

947人浏览

原创

可行,需结合type列(值为fifo)、fd列(如3r/4w或pipe)和name列(为空、pipe、anon_inode:[pipe]或命名管道路径)综合识别;匿名管道name通常为空,命名管道显示实际路径。

linux怎么查看进程打开的pipe管道 linux下lsof -p关联进程详解

Linux 下用 lsof -p 查看进程打开的 pipe 管道是可行的,但默认输出里不会直接标出 “pipe”,需要结合 TYPE 和 NAME 列人工识别——因为 pipe 在内核中表现为 FIFO 类型文件,且 NAME 通常为空或显示为 pipe。

lsof -p 输出中怎么识别 pipe 管道

执行 lsof -p <pid></pid> 后,关键看三列:TYPE、FD、NAME:

  • TYPE 列值为 FIFO 的行,基本就是管道(匿名 pipe 或命名 pipe)
  • FD 列若为数字(如 3r、4w),说明是普通文件描述符打开的 pipe;若为 pipe,则大概率是内核级匿名 pipe(父子进程间通信用)
  • NAME 列为空,或显示类似 pipe、anon_inode:[pipe]、/tmp/myfifo(命名 pipe 路径)
  • 注意:匿名 pipe 不会出现在文件系统中,所以 NAME 为空是正常现象;命名 pipe(FIFO 文件)会有实际路径

为什么 lsof -p 有时看不到 pipe?常见漏查原因

不是 pipe 不存在,而是没被当前 lsof -p 捕获到,原因包括:

Browser Setup (No-Root Linux)
Browser Setup (No-Root Linux)

在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...

下载
  • 进程已关闭读/写端,只剩一端打开(pipe 需两端同时存在才活跃,单端残留可能不显在 lsof 中)
  • 调用的是 popen() 创建的子进程管道,其 pipe fd 属于子进程,而非父进程 —— 此时要查子进程 PID,不是父进程
  • 权限不足:lsof 默认无法查看其他用户进程的 fd,非 root 用户执行时,lsof -p 只能看到自己拥有的进程
  • pipe 已被关闭但缓冲区仍有数据(罕见),此时内核可能尚未彻底释放资源,lsof 不一定列出

确认 pipe 是否真实存在且活跃的辅助命令

单靠 lsof -p 容易误判,建议组合验证:

  • 查该进程所有 fd 的底层类型:ls -l /proc/<pid>/fd/ | grep -E "(pipe|FIFO)"</pid> —— 更直观看到 pipe 符号链接
  • 过滤出 FIFO 类型并关联进程名:lsof -p <pid> -d ^cwd,^txt,^mem -a -t | xargs -r ps -p</pid>(先筛出非标准 fd,再查对应进程)
  • 检查是否有命名 pipe 被打开:lsof +D /path/to/fifo/dir(如果知道 FIFO 所在目录)
  • 对比 lsof -p <pid></pid> 和 cat /proc/<pid>/status | grep -i pipe</pid>,后者会显示 SigPnd 或 ShdPnd 等字段,但不直接反映 pipe fd,仅作参考

pipe 和 socket、regular file 的 FD 区分要点

同一进程里,不同资源共用 fd 编号,必须靠 TYPE 列区分:

  • TYPE = FIFO → pipe(匿名或命名)
  • TYPE = IPv4 或 IPv6 → socket 连接(不是 pipe)
  • TYPE = REG 且 NAME 是路径 → 普通文件;若 NAME 含 (deleted),则是已删未释放文件,和 pipe 无关
  • TYPE = ANON_INODE 且 NAME 是 [eventpoll] 或 [timerfd] → 其他内核对象,不是 pipe

最容易混淆的是 TYPE = FIFO 和 TYPE = PIPE:现代内核中 lsof 统一用 FIFO 表示两者,PIPE 类型已基本弃用;若看到 PIPE,说明内核或 lsof 版本较老。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

2023.10.09

2610

5

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

2024.12.20

6043

6

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

2024.12.23

7582

11

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

2025.07.23

3727

16

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3790

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3273

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2393

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5730

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5382

7

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习