当我在名称列中为套接字运行 lsof 命令时,一些数字出现在括号中,如下所示。这是什么意思?
command pid user fd Name
process 8197 root 29 socket:[3050474]
TL;DR:与该套接字关联的唯一编号
Unix 的定义规则之一是“一切都是文件”。因为套接字也由非常特殊的文件系统表示,通常称为sockfs。
传统文件系统上的文件具有inode-numbers - 允许识别它们的唯一编号:
$ ls -li /bin/bash
7864369 -rwxr-xr-x 1 root root 656584 Oct 15 2014 /bin/bash
^^^^^^^
inode-number
同样适用于sockfs,所有套接字也有inode-numbers。
对于没有实际文件命名模式的特殊文件系统,所有文件在形式上都有通用名称fsname:[inode-number]
(另请参见:linux+v3.19.1/fs/dcache.c#L2945)