我正在使用以下脚本来终止处于 CLOSE_WAIT 状态的进程,该进程侦听某个 ip 和某个端口。
FOR /F "tokens=5 delims= " %%I IN (
'netstat -ano ^| find "127.0.0.1:5900" ^| find "CLOSE_WAIT"'
) DO (
taskkill /PID %%I
)
该脚本完成了它的工作,但我正在寻找一个小的修改。
我希望只有当有超过 10 个连接进入 CLOSE_WAIT 状态时才终止该进程。如果假设 CLOSE_WAIT 中只有 3 个连接,则不应终止该进程。
这是我的尝试。
我使用了这篇文章中的一些技巧:https ://stackoverflow.com/questions/2913231/how-do-i-increment-a-dos-variable-in-a-for-f-loop
基本上,在循环期间我只是增加一个变量。最后,如果计数大于 10,我就杀死任务。
限制:这仅计算 and 返回的行
netstat
,finds
并使用为 taskkill计算的最后一个 PID 。它假设所有行都来自同一个 PID,但这仅在某些情况下是正确的(比如你的情况,你搜索 address和 port)。