You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何找出向另一个进程输送数据的管道进程ID?

查找向目标进程输送STDIN数据的管道进程ID方法

1. 通过/proc文件系统定位管道inode

首先确定目标进程的PID(记为$TARGET_PID),然后执行以下操作:

  • 进入目标进程的文件描述符目录:cd /proc/$TARGET_PID/fd
  • 查看STDIN对应的0号文件描述符:ls -l 0
    若为管道,输出会类似 lrwx------ 1 user user 64 Aug 10 12:00 0 -> pipe:[12345],其中12345是管道的inode编号。

2. 用lsof查找关联管道的进程

拿到管道inode后,执行以下命令过滤出所有关联该管道的进程:

sudo lsof -n | grep "pipe:[12345]"

输出结果中,除了目标进程外,另一个就是向它写入数据的进程。如果之前用lsof失败,大概率是没加sudo(权限不足)或没加-n(DNS解析导致延迟/错误)。

3. 用pstree快速排查进程树

如果管道是由进程管理器的子/兄弟进程创建的,直接查看进程树:

pstree -p $TARGET_PID

通过层级关系可以快速定位和目标进程关联的进程,尤其是同属一个进程管理器的进程。

4. 借助ss工具列出进程关联的管道

类Linux系统下,ss可以列出进程的管道关联信息:

sudo ss -xp | grep $TARGET_PID

找到对应管道的inode后,再反向查找持有该inode的进程即可。

注意事项

  • 如果目标进程处于容器或隔离命名空间中,需要用nsenter进入对应命名空间后再执行上述命令,比如:sudo nsenter -t $TARGET_PID -n -p -- bash
  • 所有工具操作建议加sudo,避免因权限不足无法读取进程的/proc信息或lsof/ss的完整输出。

内容的提问来源于stack exchange,提问作者tinkerbeast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 19:58:22