ben*_*hsu 54 networking proc socket
查看/proc/$mypid/fd/,我看到这些文件
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 0 -> /dev/pts/36 (deleted)
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 3 -> socket:[1424055856]
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 4 -> socket:[1424055868]
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 5 -> socket:[1424055882]
Run Code Online (Sandbox Code Playgroud)
因为我可以访问代码,所以我知道这些套接字与 TCP 连接相关(一个是连接到某台机器上的端口 5672,另一个连接到其他机器上的端口 3306),但我想知道哪个套接字是绑定到哪个连接。我怎样才能做到这一点?
更一般地说,我如何向操作系统询问套接字的另一端是什么?
pid*_*idi 64
一个不错的选择可能是lsof。正如man lsof所述,它对于获取有关 的信息非常方便open files such as Internet sockets or Unix Domain sockets。
首先,大致了解一下/proc/$PID/fd/列出的套接字编号。
例如,socket:[14240]您可能会感兴趣。
然后使用lsof -i -a -p $PID打印所有网络文件$PID使用的列表。
-i 生成属于用户或进程的网络文件列表
-a 逻辑组合或 AND 的给定参数
-p $PID 仅选择有关您的过程的信息
使用 PID 运行的浏览器的典型输出2543可能是:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
browser 2543 pidi 55u IPv4 14240 0t0 TCP pidi.router.lan:55038->stackoverflow.com:https (ESTABLISHED)
Run Code Online (Sandbox Code Playgroud)
以及更多类似的线路。
伟大的!现在仔细查看该DEVICE列。它匹配我们之前列出的来自/proc/$PID/fd/!
多亏了这一NAME节,我们可以说我们插座的另一端是什么。
在实际运行中,您可能会获得大量输出,但只需过滤或grep针对您感兴趣的套接字即可。
我很确定可以组合所有命令,但这应该足以让您入门。
| 归档时间: |
|
| 查看次数: |
67628 次 |
| 最近记录: |