windows 如何确保某个端口不被其他进程占用

rbl8hiat  于 2023-04-22  发布在  Windows
关注(0)|答案(8)|浏览(214)

我正在Windows环境中使用Java EE应用程序。(我使用的是Windows 7)
我正在使用Tomcat服务器,不幸的是端口号8080正忙碌(由Oracle使用)。现在我想为Tomcat分配一个不同的端口。
因此,在更改conf/server.xml文件之前,我想确保某个端口没有被任何其他进程占用,并且它是空闲的。

pjngdqdw

pjngdqdw1#

netstat -ano|findstr port no
结果将在最后一列中显示进程ID

laawzig2

laawzig22#

netstat -ano|find ":port_no"会给予你列表。
a:显示所有连接和侦听端口。
n:以数字形式显示地址和端口号。
o:显示与每个连接关联的所属进程ID。
例如:netstat -ano | find ":1900"这给你这样的结果。

UDP    107.109.121.196:1900   *:*                                    1324  
UDP    127.0.0.1:1900         *:*                                    1324  
UDP    [::1]:1900             *:*                                    1324  
UDP    [fe80::8db8:d9cc:12a8:2262%13]:1900  *:*                      1324
v7pvogib

v7pvogib3#

如果你更喜欢PowerShell,使用这个。你将得到进程的名称。

PS C:\Users\Administrator> Get-Process -Id (Get-NetTCPConnection -LocalPort 9093).OwningProcess

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
   6021    1464  2760976    2131548     290.39  25512   2 java

PID位于Id列中,它还提供了进程名称。
如果没有进程正在使用此端口,则会显示红色错误消息。
如果要终止PID为25512的进程,请使用

taskkill /PID 25512 /F

/F表示强制,有些进程没有/F就不能被杀死

r55awzrz

r55awzrz4#

它是(Get-NetTCPConnection -LocalPort“port no.”).OwningProcess

hpxqektj

hpxqektj5#

如果这是一个纯粹的本地问题,例如,你想在本地运行tomcat来测试你正在使用的应用程序,通常有效的方法是配置端口0。在这种情况下,当应用程序端口绑定时,操作系统将为它分配一个随机的“临时”端口,希望它注销。
你必须检查一下tomcat是否支持这个,但是我希望它的代码是past answers mentioning it
它避免了硬编码端口和TOCTOU的问题,尽管它显然不太方便,因为您需要每次都获得需要连接的端口。
另一种选择是尝试一堆自由端口,例如8000[0]和8888是HTTP服务器的常见备用端口。8008也是IANA官方备用端口,尽管我不记得曾经见过它使用。
[0]虽然正式分配给iRDMI

gajydyqb

gajydyqb6#

netstat -ano|grep
这将给予端口的状态(是否正在使用

e4eetjau

e4eetjau7#

如果有人在windows10专业版中尝试,netstat**-anp可能未列出任何连接,请尝试netstat -an并添加|find**查找您想要的端口
例如,我想检查端口65432当前正在使用,然后我这样做

netstat -an|find "65432"
nbnkbykc

nbnkbykc8#

您可以使用“netstat”来检查端口是否可用。
使用netstat -anp | find "port number"命令查找端口是否被其他进程占用。如果被其他进程占用,将显示该进程的进程ID。

您必须输入:before端口号获取实际输出

Ex netstat -anp | find ":8080"

相关问题