我netstat -a
可以看到从我的机器到 MySQL 服务器的所有连接。有什么方法可以查看哪个进程或可执行文件负责每个连接吗?
到目前为止,我发现的唯一解决方案是监听数据包并分析其中的数据。但如果数据无法提供有关该过程的信息怎么办?
答案1
-b
同样使用开关:
-b 显示创建每个连接所涉及的可执行文件或 监听端口。在某些情况下,众所周知的可执行文件主机 多个独立的组件,在这些情况下 创建连接所涉及的组件序列 或监听端口。在这种情况下,可执行文件 名称在底部的 [] 中,顶部是它调用的组件, 依此类推,直到达到 TCP/IP。请注意,此选项 可能会很耗时,而且除非你有足够的 权限。
例子:
$netstat -ab 活动连接 原始本地地址外部地址状态 PID TCP 约翰:epmap 约翰:0 正在监听 1404 目录:\windows\system32\WS2_32.dll 目录:\WINDOWS\system32\RPCRT4.dll 目录:\windows\system32\rpcss.dll 执行程序目录:\WINDOWS\system32\svchost.exe 目录:\WINDOWS\system32\ADVAPI32.dll [svchost进程] TCP 约翰:3150 18-24-50-20.rdsnet.ro:50087 SYN_SENT 392 [deluged.exe] TCP 约翰:3155 ool-18d24.static.optonline.net:20170 SYN_SENT 392 [deluged.exe] TCP 约翰:3157 69-62-57-59-adsl-tan.dynamic.so-net.net.tw:10365 SYN_SENT 392 [deluged.exe]
答案2
Sysinternals Process Explorer 会告诉您应用程序打开了哪些连接,但我不知道是否有办法通过连接进行反向查找。如果您没有太多进程需要检查,这应该可行。