netstat 本身不直接显示 socket 的 inode 编号,但可通过 -e 或 -tulnpe 等参数在输出中呈现 i-node 列;linux 中每个 socket 对应唯一 inode,可用于反查进程、追踪连接状态及排查 socket 泄漏等问题。

netstat 本身不直接显示 socket 的 inode 编号,但可通过 -e(扩展信息)或结合 -tuln 等参数输出包含 inode 的字段——关键在于:Linux 中每个网络 socket 对应一个内核 inode,而 netstat 在特定模式下会将其列为 I-Node 或 Inode 列。
查看连接对应的 inode 编号
在 Linux 上运行以下命令可列出监听和已建立连接的 inode:
- netstat -tulnpe —— 显示 TCP/UDP 监听端口,含 PID、进程名和 inode(需 root 权限);
- netstat -antp | grep ESTABLISHED —— 查看已建立连接,并附带 inode(若系统支持且权限足够);
- netstat -xlnp —— 查看 Unix domain socket 连接及其 inode(路径旁常标注 I-Node 值)。
输出中若含 I-Node 列(如 unix 2 [ ACC ] STREAM LISTENING 15031 /tmp/sock),其中 15031 就是该 socket 对应的 inode 号。
通过 inode 反查进程(进阶定位)
拿到 inode 后,可进一步确认归属进程:
- 查 /proc 下所有打开 socket 的进程:find /proc/[0-9]*/fd -lname "socket:[inode号]" 2>/dev/null;
- 或直接定位进程目录:ls -l /proc/*/fd/ | grep "socket:\[inode号\]";
- 再用 readlink /proc/PID/fd/fd_num 验证是否为对应 socket。
此方法绕过 netstat 的权限限制(如非 root 用户无法看到 -p 输出),适用于审计或调试无权限场景。
注意:macOS 和 Windows 不支持 inode 显示
macOS 的 netstat 不输出 inode 字段,推荐改用 lsof -i -P -n(其 INODE 列等效);Windows 无 inode 概念,netstat -o 只提供 PID,不关联底层文件系统节点。
为什么 inode 有用?
inode 是 Linux 内核中 socket 的唯一标识,比 PID 更底层、更稳定——同一进程重启后 PID 变化,但若 socket 复用(如 SO_REUSEADDR),旧连接残留的 inode 仍可被追踪;它也是排查 TIME_WAIT、CLOSE_WAIT 积压或异常 socket 泄漏的关键线索。











