bat查看java进程 过滤_通过查找.BAT中使用的端口来终止进程

本文介绍了如何通过bat脚本来查看并终止占用特定端口(如8080)的Java进程。主要涉及`netstat`命令用于找出占用端口的进程ID,然后使用`TaskKill.exe`配合`PID`来结束进程。同时,讨论了不同操作系统可能需要的参数调整以及排除非监听状态进程的方法。
摘要由CSDN通过智能技术生成

回答(14)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

这是一个让你入门的命令:

FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :8080') DO @ECHO TaskKill.exe /PID %%P

如果您对批处理文件有信心,请删除 @ECHO .

FOR /F "tokens=4 delims= " %%P IN ('netstat -a -n -o ^| findstr :8080') DO TaskKill.exe /PID %%P

请注意,对于不同的操作系统,您可能需要稍微更改一下 . 例如,在Windows 7上,您可能需要 tokens=5 而不是 tokens=4 .

How this works

FOR /F ... %variable IN ('command') DO otherCommand %variable...

这使您可以执行 command ,并循环其输出 . 每一行都将填入 %variable ,并且可以随时随地在 otherCommand 中展开,无论你喜欢什么 . 实际使用中的 %variable 只能有一个单字母的名称,例如 %V .

"tokens=4 delims= "

这允许你按空格分割每一行,并取出该行中的第4个块,并将其填入 %variable (在我们的例子中, %%P ) . delims 看起来是空的,但这个额外的空间实际上很重要 .

netstat -a -n -o

只需运行它就可以找到答案 . 根据命令行帮助,它“显示所有连接和侦听端口 . ”,“以数字形式显示地址和端口号 . ”和“显示与每个连接关联的拥有进程ID” . 我只是使用这些选项,因为别人建议它,它碰巧工作:)

^|

这将获取第一个命令或程序的输出( netstat )并将其传递给第二个命令程序( findstr ) . 如果直接在命令行中使用它,而不是在命令字符串中,则使用 | 而不是 ^| .

findstr :8080

这会过滤传递给它的任何输出,只返回包含 :8080 的行 .

TaskKill.exe /PID

这会使用进程ID终止正在运行的任务 .

%%P instead of %P

这在批处理文件中是必需的 . 如果在命令提示符下执行此操作,则应使用 %P .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

打开命令提示符并运行以下命令

C:\Users\username>netstat -o -n -a | findstr 0.0:3000

TCP 0.0.0.0:3000 0.0.0.0:0 LISTENING 3116

C:\Users\username>taskkill /F /PID 3116

,这里3116是进程ID

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

要在命令行上查找特定进程,请使用以下命令:8080是进程使用的端口

netstat -ano | findstr 8080

杀死进程使用下面命令21424是进程ID

taskkill /pid 21424 /F

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

使用Merlyn的解决方案导致其他应用程序像firefox一样被杀死 . 这些进程使用相同的端口,但不是作为监听器:

例如:

netstat -a -n -o | findstr :8085

TCP 0.0.0.0:8085 0.0.0.0:0 LISTENING 6568

TCP 127.0.0.1:49616 127.0.0.1:8085 TIME_WAIT 0

TCP 127.0.0.1:49618 127.0.0.1:8085 TIME_WAIT 0

因此,可以通过向findstr添加“LISTENING”来排除这些,如下所示:

FOR /F "tokens=5 delims= " %%P IN ('netstat -a -n -o ^| findstr :8085.*LISTENING') DO TaskKill.exe /PID %%P

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

要列出在端口8080上运行的所有进程,请执行以下操作 .

netstat -ano |找到“8080”

TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 10612

TCP [::]:8080 [::]:0 LISTENING 10612

然后杀死进程运行以下命令

taskkill / F / PID 10612

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

谢谢大家,只是添加一些进程不会关闭,除非/ F强制开关也与TaskKill一起发送 . 同时使用/ T开关,将关闭进程的所有辅助线程 .

C:> FOR / F“tokens = 5 delims =”%P IN('netstat -a -n -o ^ |

findstr:2002')DO TaskKill.exe / PID%P / T / F.

对于服务,有必要获取服务的名称并执行:

sc停止ServiceName

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

刚完成:

我想杀死连接到特定端口但不是进程侦听的所有进程

端口9001的命令(在cmd shell中)是:

FOR /F "tokens=5 delims= " %P IN ('netstat -ano ^| findstr -rc:":9001[ ]*ESTA"') DO TaskKill /F /PID %P

findstr :

r用于表达式,c用于精确链匹配 .

[] *用于匹配空格

netstat :

a - >全部

n - >不解决(更快)

o - > pid

它的工作原理是因为netstat打印出源端口然后打印出目标端口然后打开ESTABLISHED

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

如果要杀死正在侦听端口8080的进程,可以使用PowerShell . 只需将Get-NetTCPConnection cmdlet与Stop-Process结合使用即可 .

经过测试,应该可以在Windows 10或Windows Server 2016上使用PowerShell 5.但是,我想它应该也适用于安装了PowerShell 5的旧版Windows .

这是一个例子:

PS C:\> Stop-Process -Id (Get-NetTCPConnection -LocalPort 8080).OwningProcess

Confirm

Are you sure you want to perform the Stop-Process operation on the following item: MyTestServer(9408)?

[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

与Merlyn的回应类似,但这个也处理了这些情况:

端口号实际上是您不想要的另一个较长端口号的左子串 . 你想搜索一个 exact 端口号,这样你就不会杀死一个随机的,无辜的进程!

脚本代码需要能够运行多次并且每次都是正确的,而不是显示较旧的错误答案 .

这里是:

set serverPid=

for /F "tokens=5 delims= " %%P in ('netstat -a -n -o ^| findstr /E :8080 ') do set serverPid=%%P

if not "%serverPid%" == "" (

taskkill /PID %serverPid%

) else (

rem echo Server is not running.

)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

脚步:

转到 apache tomcat 服务器的 conf 文件夹 . 在我的case,它 apache-tomcat-7.0.61\conf 因为我正在使用apache-tomcat-7.0.61

打开 server.xml 并根据需要将端口号从8080更改为任何其他端口 . 例如:8081,8082,8087等

现在转到 bin 文件夹并运行 shutdown.bat

现在通过eclipse重启服务器 .

现在您的项目可以正常运行而不会中断 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

如果有人在寻找Powershell脚本:

function Search-And-Destroy

{

param ( [Parameter(Mandatory=$true)][string]$port )

$lines = netstat -a -o -n | findstr $port

$ports = @()

ForEach($line In $lines)

{

$res = $($lines -split '\s+')

$ports += $res[5]

}

$ports = $ports | select -uniq

ForEach($port In $ports)

{

echo $(taskkill /F /PID $port)

}

}

此函数基本上执行上述函数的功能,但它采用Powershell脚本格式,因此您可以将其添加到Powershell配置文件中 . 要查找您的 Profiles 的位置,请转到PowerShell并输入 echo $profile

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

将其粘贴到命令行中

FOR /F "tokens=5 delims= " %P IN ('netstat -ano ^| find "LISTENING" ^| find ":8080 "') DO (TASKKILL /PID %P)

如果你想在批量pu %%P 而不是 %P 中使用它

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

如果你是系统你不能结束它的任务 . 试试这个命令

x:> net stop http / y

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值