Featured image of post Windows 根据端口查找进程

Windows 根据端口查找进程

根据暴露的端口 查到 进程文件对应目录

前情提要

由于有这个待办的存在,我将尝试去证明:JNDI配置后,与数据库通信层的连接代码是交给了 Tomcat,JBOSS 等完成

虽然可能没什么意义,但是有疑问想要自己解决不总是坏的

在Debug时,尝试通过通讯层面证明为TomcatMysql通信

在抓包过程中,很遗憾,只能得到目的端口和来源端口信息(当然咯,网络层面通讯进行数据库查询带什么本地进程信息呢?),如下图

image-20241205165612177

3306MySQL的默认端口,如果4894是固定端口,且该服务属于Tomcat的话,此次证明就可以告一段落了

显然没有那么简单,重新运行发现连接数据库3306-Server 端口所对应的Client端口并不固定,那么只能说明将要进行连接时,Client从 OS 处申请了一个端口,也没有指定。

所以如果可以找到端口对应的进程对应的文件位置,如果该文件处于Tomcat目录,而非JDK,项目目录,岂不是也可以证明是Tomcat发起连接的?

答案:很遗憾,不能,找到的是 JDK 中的 java.exe

当然了笨蛋,JVM 管所有,所以如果有 java 程序发起连接,都需要经过 JVM 啊,JVM 当然来源于 java.exe 咯,笨蛋

但是尽管这是让自己无语的一次脑洞尝试,但这次的排查有一些知识点可以记下来,故有此文章

端口号查进程id

进程id,也叫pid

需要知道的东西:需要查询的端口号

在有端口号的前提下,可以通过如下命令进行端口查询

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 只看某一个端口
C:\Users\Dan>netstat -ano|findstr 5994
  TCP    172.24.176.1:5994      172.24.189.19:3306     ESTABLISHED     20444

# 想看看所有端口
C:\Users\Dan>netstat -ano

活动连接

  协议  本地地址          外部地址        状态           PID
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       1140
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:1024           0.0.0.0:0              LISTENING       856
  TCP    0.0.0.0:1999           0.0.0.0:0              LISTENING       15032
  ...........

根据pid,就可以确定一个具体的进程了

进程id查任务名

命令如下

1
2
3
# 20444 修改为需查询的 PID 号
C:\Users\Dan>tasklist|findstr "20444"
java.exe                     20444 Console                    1    184,196 K

但是笔者不满足,笔者想要知道可执行文件的具体目录位置

所以有下

进程id查文件所在位置

命令如下

1
2
3
4
# 20444 修改为需查询的 PID 号
C:\Users\Dan>wmic process where processid=20444 get processid,executablepath,name
	ExecutablePath                                  Name      ProcessId
	D:\Program Files\Java\jdk-17.0.11\bin\java.exe  java.exe  20444

OK,记录在此

Dan❤Anan
Built with Hugo
主题 StackJimmy 设计