在Linux中,查看Socket的详细信息可以通过多种方式。以下是几种常用的方法:

使用 `ss` 命令

`ss` 是一个强大的工具用于查看Socket状态。

bash

ss t a 查看所有TCP Socket状态

ss l u 查看所有未建立的UDP Socket

ss x /path/to/socket 指定查看Unix域套接字

linux查看socket  第1张

参数说明:

`t` : TCP

`a` : All, 显示所有的Socket(包括未连接)

`l` : List, 只显示已监听的socket

linux查看socket  第2张

`u` : UDP

`x` : Unix domain sockets

使用 `netstat` 命令

`netstat` 是另外一个查看网络状态的经典命令,但在较新的系统中已被废弃,推荐使用 `ss` 替代。但仍然有用的是:

linux查看socket  第3张

bash

netstat at 显示所有的TCP端口并处在LISTEN(倾听),TIME_WAIT,CLODED等状态下的进程名和PID等信息

netstat au 对应udp连接状态输出信息

linux查看socket  第4张

查看进程相关Socket

如果你想查看属于特定进程的socket,可以结合 `ss`, `lsof`, 或 `proc/` 文件系统一起用。

lsof

例如,你已经知道了某个应用的pid:

bash

lsof i p

linux查看socket  第5张

或者,你只知道进程的名字:

bash

linux查看socket  第6张

lsof i | grep

使用 `/proc/` 系统

每一个程序都有对应的`/proc/`下的PID目录,并且里面包含着程序的各种内部状态与信息。

如,要查找某个程序打开的TCP socket文件描述符,你可以去:

bash

cat /proc//fdinfo/ 一般从文件描述列表中的fd获取

linux查看socket  第6张

或者通过查看文件来判断是哪种Socket类型(TCP或UDP或UNIX)

ls /proc//fd 显示所有文件描述符的ID,通常以数字结尾,例如:0代表标准输入输出; 1为标准输出;2为标准错误;其它代表各种打开的文件或设备文件等。

注意,以上文件或文件夹名中``替换为你的进程标识号 (PID)。

linux查看socket  第8张

通过这些命令,你可以获得详细的socket相关信息,进而进行深入的问题分析与调试。