paypal网站做外贸,最佳经验网站,衡水做wap网站建设,佛山网站建设服务一.查看当前进程的socket对应的fd信息
1. lsof
lsof#xff08;List Open Files#xff09;命令可以列出系统中所有打开的文件的信息#xff0c;包括 socket。
用法
要查看特定进程的 socket 信息#xff0c;可以使用以下命令#xff1a;
lsof -p pid | grep…一.查看当前进程的socket对应的fd信息
1. lsof
lsofList Open Files命令可以列出系统中所有打开的文件的信息包括 socket。
用法
要查看特定进程的 socket 信息可以使用以下命令
lsof -p pid | grep socket pid: 要查看的进程的进程 ID。
grep socket: 过滤出 socket 相关的信息。示例
lsof -p 1234 | grep socket
2. netstat
netstat 命令用于显示网络连接、路由表、接口统计等。使用 netstat 可以查看当前进程的 socket 连接。
用法
netstat -anp | grep pid 选项说明:
-a: 显示所有连接和监听的端口。
-n: 以数字形式显示地址和端口号。
-p: 显示使用每个 socket 的进程信息。示例
root192.168.10.114:/proc/8141/fd|⇒ netstat -anp | grep 8141
tcp6 0 0 :::10443 :::* LISTEN 8141/smartapi
unix 3 [ ] STREAM CONNECTED 47938 8141/nn
unix 2 [ ] STREAM CONNECTED 4489953 8141/nn
unix 2 [ ] STREAM CONNECTED 4488523 8141/nn
unix 2 [ ] DGRAM 46849 8141/nn第一行TCP6 Socket
tcp6 0 0 :::10443 :::* LISTEN 8141/nntcp6:
表明这是一个 TCP socket且使用的是 IPv6 协议。0 0:
第一个 0 表示接收队列recv-q当前没有待处理的接收数据。
第二个 0 表示发送队列send-q当前没有待发送的数据。:::10443:
该 socket 正在监听所有地址:::的 10443 端口表示它可以接收来自任何 IPv6 地址的连接请求。:::*:
远程地址该项显示为 * 表示没有特定的远程地址因为 LISTEN 状态的 socket 不会连接到特定的远程主机。LISTEN:
表明这个 socket 是处于监听状态准备接受连接。8141/nn:
显示使用该 socket 的进程信息。这里的 8141 是进程 ID而 nn 是进程的名称。
第二到第五行UNIX Socket
unix 3 [ ] STREAM CONNECTED 47938 8141/nn
unix 2 [ ] STREAM CONNECTED 4489953 8141/nn
unix 2 [ ] STREAM CONNECTED 4488523 8141/nn
unix 2 [ ] DGRAM 46849 8141/nn 每行的结构相似逐行分析通用部分解释
unix:
表示这一行信息涉及 Unix Domain socket。3 / 2 / 2 / 2:
这些数字表示接收和发送队列的长度。
第一个数字是接收队列中待处理的数据包数量第二个数字如果有表示发送队列中的数据包数量。[ ]:
表示当前没有特定的数据在接收队列中也没有存储其他状态的信息。STREAM / DGRAM:
指明 socket 的类型。
STREAM 表示这是一个流式 socket用于 TCP 样式的连接。
DGRAM 表示这是一个数据报式 socket用于 UDP 样式的连接。CONNECTED:
该状态指示 socket 已建立连接。47938, 4489953, 4488523, 46849:
显示与该 Unix socket 相关的文件描述符FD。这些是文件描述符在进程内部的标识符。8141/nn:
使用该 socket 的进程的信息显示进程 ID 是 8141进程名称为 smartapi。
具体分析
第一行TCP6 设置
正在监听 IPv6 中的 port 10443准备接受来自任何地址的连接。第二行
一个流式 Unix socket 连接接收队列中有 3 个待处理数据进程 smartapi 使用 FD 47938。第三行
另一个流式 Unix socket 连接接收队列中有 2 个待处理数据进程使用 FD 4489953。第四行
第三个流式 Unix socket 连接接收队列中有 2 个待处理数据进程使用 FD 4488523。第五行
一个数据报式 (DGRAM) Unix socket连接状态为未填充接收队列进程使用 FD 46849。总结
从输出中可以看出nn 进程同时使用了一些 TCP 和 Unix socket
包括监听 TCP 连接和若干个已建立的 Unix Domain socket 连接。
Unix sockets 通常在同一台机器的进程之间进行高效的通信。
3. ss
ss 是 netstat 的替代工具提供更详细的 socket 统计信息速度更快。
用法
ss -p | grep pid -p: 显示使用 socket 的进程信息。示例
root192.168.10.114:/proc/8141/fd|⇒ ss -p | grep 8141
u_str ESTAB 0 0 * 47938 * 47939 users:((smartapi,pid8141,fd20))
u_str ESTAB 0 0 * 4489953 * 0 users:((smartapi,pid8141,fd10))
u_str ESTAB 0 0 * 4488523 * 0 users:((smartapi,pid8141,fd5))输出解析
LISTEN / ESTAB: 显示 socket 的状态LISTEN 表示正在监听ESTAB 表示已建立连接。0 / 128: 表示队列的长度。*:47938: 表示绑定的地址和端口。users:(...): 显示使用该 socket 的进程信息包括进程名称、PID 和文件描述符fd。
一步查看特定 socket 的信息
要详细查看某个 socket 的文件描述符信息您可以定位到 /proc/pid/fd 目录其中 pid 是进程 ID然后列出文件描述符。
ls -l /proc/1234/fd
4. 使用 ss 命令与 less
首先可以使用 ss 命令获取 socket 信息然后通过管道将输出结果传给 less。
假设您要查看所有进程的 socket 信息
ss -ap | less -a: 显示所有 socket包括监听和已连接的 socket。
-p: 显示使用 socket 的进程信息。
如果您只希望查看特定进程的 socket 信息可以根据名为特定进程的关键字过滤
ss -ap | grep process_name | less process_name: 要查看的进程名称。
示例查找特定进程
u_str ESTAB 0 0 * 47938 * 47939 users:((nn,pid8141,fd20))
u_str ESTAB 0 0 * 4489953 * 0 users:((nn,pid8141,fd10))
u_str ESTAB 0 0 * 4488523 * 0 users:((nn,pid8141,fd5))
u_dgr UNCONN 0 0 * 46849 * 47423 users:((nn,pid8141,fd6))
u_dgr UNCONN 0 0 * 26270 * 0 users:((nn,pid8141,fd3),(nn,pid2159,fd3))
u_dgr UNCONN 0 0 * 31283 * 0 users:((nn,pid2159,fd6))
u_str ESTAB 0 0 * 26318 * 0 users:((nn,pid2159,fd5))
tcp LISTEN 0 128 [::]:10443 [::]:* users:((n,pid8141,fd19))解析
逐部分解析
u_dgr:
这一部分表示 Socket 的类型和协议。u_dgr 表示使用 Unix Domain DatagramUDP类型的 socket。Unix Domain sockets 允许在同一台机器上的进程之间进行通信。UNCONN:
这表示 socket 的状态。
UNCONNUnconnected表示这个 socket 仍然未连接。对于 UDP 类型的 sockets 来说连接状态通常不如 TCP 重要但这仍表明这个 socket 并没有处于激活状态来接收或发送数据。0 0:
这两个数字分别代表接收队列和发送队列的长度。
0 表示接收队列中没有待处理的数据0 也表示发送队列中没有等待发送的数据。* 46849:
这是本地地址和本地端口。
* 表示这个 socket 监听所有的地址即可以接收来自所有 IP 的连接。
46849 是本地端口号。* 47423:
这是远程地址和远程端口。
同样* 表示远程地址即远程 IP而 47423 是远程端口号。对于 UDP sockets这个信息显示的是接收的通信地址。users:((nn,pid8141,fd6)):
这一部分显示使用该 socket 的进程信息。
(nn, pid8141, fd6) 具体表示
nn 是使用这个 socket 的进程名称。
pid8141表示进程的 ID。
fd6表示进程中的文件描述符File Descriptor编号这里的数字 6 是该 socket 在进程中被引用的文件描述符。
5. 使用 /proc 文件系统与 less
如果您知道进程 ID可以直接从 /proc 文件系统查看 socket 的详细信息。
示例
less /proc/pid/net/tcp
这将显示 TCP sockets 的详细信息包括本地地址、远程地址等。 6.其他
使用 netstat 命令可以检查系统中某个特定端口或 IP 地址的状态。以下是一些常用的选项和示例教您如何使用 netstat 来查看端口或 IP 的状态。
基本用法
1. 查看所有连接和监听状态
要查看所有连接和监听的端口可以运行以下命令
netstat -an -a: 显示所有连接和监听的socket。
-n: 以数字形式显示地址和端口号。
2. 查看特定端口的状态
假设您想查看端口 10443 的状态您可以使用以下命令
netstat -an | grep :10000
这条命令会输出与端口 10000 相关的所有连接及其状态。
3. 查看特定 IP 的状态
若您想查看与特定 IP 地址例如 192.168.1.100的连接可以使用
netstat -anp | grep :10443 -p: 显示使用每个 socket 的进程信息包括进程 ID 和名称。
5. 查看 TCP 和 UDP 状态
如果您只想查看 TCP 或 UDP 连接您可以分别使用
netstat -at # 查看 TCP 连接
netstat -au # 查看 UDP 连接
示例输出解析
假设我们运行以下命令来查看端口 10000 的状态
netstat -an | grep :10000
可能的输出结果
tcp6 0 0 :::10000 :::* LISTEN tcp6: 表示这是一个 IPv6 TCP socket。
0 0: 接收队列和发送队列的长度都为 0。
:::10443: 表示监听所有地址的 10000 端口。
LISTEN: 表示该端口当前处于监听状态。
7. 查看所有连接和其进程信息
首先可以通过 netstat 查看当前系统上所有活动的 TCP 和 UDP 连接以及它们对应的进程
-t: 显示 TCP 连接。
-u: 显示 UDP 连接。
-n: 以数字方式显示地址和端口号。
-a: 显示所有连接包括监听状态的 socket。
-p: 显示使用每个 socket 的进程信息。
2. 查看特定进程的连接信息
如果您想查看特定进程的连接信息可以使用 grep 命令来过滤出该进程的名称或进程 IDPID。
假设您想查看进程名称为 nn的连接信息
netstat -tunap | grep nn
或者如果你知道进程的 PID例如 8141
netstat -tunap | grep 8141
示例输出解析
运行上述命令后您可能会看到类似的输出
tcp 0 0 192.168.1.5:10000 192.168.1.100:54321 ESTABLISHED 8141/nn
udp 0 0 192.168.1.5:1234 0.0.0.0:* 8141/nntcp 或 udp: 表示连接的类型。
0 0: 表示接收和发送队列的长度。
192.168.1.5:10000: 本地地址和本地端口。
192.168.1.100:54321: 远程地址和远程端口仅在 TCP 连接中显示。
ESTABLISHED: 表示连接的状态。
8141/nn: 使用该连接的进程 ID 和名称。