2013-04-11 77 views
56

我的服务崩溃使用端口与经典:查找进程的PID在启动的时候在Windows

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

我如何才能找到杀死它的过程吗?

+0

更复杂的替代解决方案在这里:http://stackoverflow.com/questions/48198/how-can-you-find-out-which-process-is-listening-on-a-port-on-windows – Thomas 2016-05-09 10:03:07

回答

136

只需打开一个命令外壳和类型:(说你的端口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 
+0

here如何获得唯一的PID,因为它返回整个详细信息 – 2014-06-06 01:27:46

+0

如何获得结果 – Chinya 2015-10-29 11:45:01

+5

以上的唯一PID窗体或'nestat -aon | findstr 123456' – 2016-02-09 14:18:40

40

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

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

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

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

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

然后,通过PID taskkill /F /PID 15776

/F杀死过程 - 指定要强行终止该过程(ES)。

注:您可能需要额外的许可(从管理员身份运行)杀死一些特定过程

+0

为什么netstat退出,除非你给它n标志? – 2016-07-01 13:40:30

4

后,一些与我来到这个动作脚本摆弄。复制并保存它在一个.bat文件:

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

变化“找到‘3306’”在需要是自由的端口号。然后以管理员身份运行该文件。如果你想这样做编程,你可以使用一些给你的选项,如PowerShell脚本如下它会杀死这个港口

0

上运行的所有进程:

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

然而,请注意,您可以更准确地得到您的PID结果。如果您知道该端口应该位于哪个主机上,则可以将其缩小很多。 netstat -aon | findstr "0.0.0.0:9999"将只返回一个应用程序,最有可能的是正确的。只有搜索上的端口号可能会导致你回到那个只发生在它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代替脚本并杀死错误的进程。

相关问题