/proc/net/tcp 为我提供了套接字的本地地址、端口和 inode 编号(例如,0.0.0.0:5432 和 9289)。
鉴于上述信息,我想找到特定进程的 PID。
可以打开 /proc 中的每个编号文件夹,然后使用诸如“$ sudo ls -l /proc/*/fd/ 2>/dev/null | grep socket”之类的 shell 命令检查符号链接是否匹配套接字/inode 编号。然而,这似乎比必要的计算成本更高,因为在任何给定系统上,<5% 的进程具有打开的 TCP 套接字。
找到打开给定套接字的 PID 的最有效方法是什么?我更喜欢使用标准库,我目前正在使用 Python 3.2.3 进行开发。
编辑:从问题中删除了代码示例,因为它们现在包含在下面的答案中。