在Windows上查找使用端口的进程的PID

我的服务崩溃与经典启动:

java.rmi.server.ExportException: Listen failed on port: 9999 

我怎样才能find杀死它的过程?

只要打开一个命令shell并键入:(说你的端口是123456)

 netstat -a -n -o | find "123456" 

你会看到你需要的一切

标题是:

  Proto Local Address Foreign Address State PID TCP 0.0.0.0:37 0.0.0.0:0 LISTENING 1111 

在Windows上查找使用端口的进程的PID (例如端口:“9999”)
netstat -aon | find "9999"

-a显示所有连接和侦听端口。

-o显示与每个连接关联的拥有进程ID。

-n以数字forms显示地址和端口号。

输出:
TCP 0.0.0.0:9999 0.0.0.0:0 LISTENING 15776

然后通过PID taskkill /F /PID 15776 杀死进程

/F – 指定强制终止进程(es)。

注意:您可能需要额外的权限(从pipe理员运行)来杀死某些特定的进程

经过一番脚本摆弄之后,我来到了这个行动。 复制并保存在.bat文件中:

 FOR /F "usebackq tokens=5" %%i IN (`netstat -aon ^| find "3306"`) DO taskkill /F /PID %%i 

在需要空闲的端口号中更改“查找”3306“'。 然后以pipe理员身份运行该文件。 它会杀死在这个端口上运行的所有进程

如果您想以编程方式执行此操作,则可以在PowerShell脚本中使用以下某些选项:

 $processPID = $($(netstat -aon | findstr "9999")[0] -split '\s+')[-1] taskkill /f /pid $processPID 

然而; 请注意,您可以更准确地得到您的PID结果。 如果你知道端口应该在哪个主机上,你可以把它缩小很多。 netstat -aon | findstr "0.0.0.0:9999" netstat -aon | findstr "0.0.0.0:9999"只会返回一个应用程序,最有可能的是正确的。 只有在端口号上search可能会导致你返回只有9999进程,如下所示:

 TCP 0.0.0.0:9999 0.0.0.0:0 LISTENING 15776 UDP [fe80::81ad:9999:d955:c4ca%2]:1900 *:* 12331 

最有可能的候选人通常首先结束,但如果在运行脚本之前进程已经结束,则可以使用PID 12331来结束yp,并杀死错误的进程。