我发现lsof
命令输出中使用了一个 Unix 套接字:
COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME
screen 110970 username 4u unix 0xffff91fe3134c400 0t0 19075659 socket
“DEVICE”列包含看起来像内存地址的内容。根据 lsof 手册页:
DEVICE contains the device numbers, separated by commas, for a character special, block special, regular, directory or NFS file;
or ``memory'' for a memory file system node under Tru64 UNIX;
or the address of the private data area of a Solaris socket stream;
or a kernel reference address that identifies the file (The kernel reference address may be used for FIFO's, for example.);
or the base address or device name of a Linux AX.25 socket device.
Usually only the lower thirty two bits of Tru64 UNIX kernel addresses are displayed.
我的问题是,我在看这些中的哪一个0xffff91fe3134c400
?
另外,我该如何与之互动?我知道我可以netcat
用来连接到 Unix 域套接字,但是从在线阅读示例看来,您必须指定一个文件。
我不知道如何回答您的第一个第二个问题,但是对于第一个问题,您可以使用
+E
标志 forlsof
来显示套接字的端点。从手册页:例如,以下是某人试图找出进程的 fd 6 端点的问题
top
中的一些示例:的
-U
标志lsof
仅显示 Unix 套接字文件。请注意,您只会看到侦听进程的套接字文件的名称。另一个进程不会显示 unix 套接字文件的名称,但使用
+E
lsof 会显示正在侦听的套接字文件的 inode,并且还会为侦听此套接字的进程添加一行(以及套接字文件名)。注意在这个例子中,我们只要求
lsof
显示命令的文件描述符top
,但是lsof
添加了另一行dbus-daem
- 是监听进程,它监听的套接字文件是/var/run/dbus/system_bus_socket
.type=STREAM ->INO=366381191 874,dbus-daem,12u
)交互/var/run/dbus/system_bus_socket type=STREAM ->INO=366379599 25127,top,6u
),在那里你可以看到套接字文件名为/var/run/dbus/system_bus_socket
.