如何删除已分配给端口的当前进程/应用程序?

例如:localhost:8080


当前回答

如果你想使用Python:检查是否可以在Python中杀死正在监听特定端口的进程,例如8080?

Smunk给出的答案很好。我在这里重复他的密码:

from psutil import process_iter
from signal import SIGTERM # or SIGKILL

for proc in process_iter():
    for conns in proc.connections(kind='inet'):
        if conns.laddr.port == 8080:
            proc.send_signal(SIGTERM) # or SIGKILL
            continue

其他回答

如果你使用的是Windows终端,那么杀死过程可能不那么乏味。 我一直在使用windows终端,kill PID对我来说可以很好地杀死端口上的进程,因为新的windows终端支持某些bash命令。例如:杀死13300人

整个过程是这样的

打开Windows终端 键入以下命令以显示在您希望终止进程的端口上运行的进程。 netstat -ano | findstr:PORT 输入following终止进程。 杀死PID

例如:

PS C:\Users\username> netstat -ano | findstr :4445
  TCP    0.0.0.0:4445           0.0.0.0:0              LISTENING       7368
  TCP    [::]:4445              [::]:0                 LISTENING       7368
PS C:\Users\username> kill 7368
PS C:\Users\username> netstat -ano | findstr :4445
PS C:\Users\username>

当我输入第一个命令来列出端口上的进程时,它返回空。这意味着现在所有进程都被杀死了。

更新:kill是Stop-Process的别名。谢谢@FSCKur让我们知道。

最简单的解决办法,也是我唯一记得的办法:

在Windows Powershell中

假设我们想停止端口8080上的进程

获取过程:

netstat -ano | findstr :8080

停止进程

stop-process 82932

你可以运行一个bat文件:

@ECHO OFF                                                                              
FOR /F "tokens=5" %%T IN ('netstat -a -n -o ^| findstr "9797" ') DO (
SET /A ProcessId=%%T) &GOTO SkipLine                                                   
:SkipLine                                                                              
echo ProcessId to kill = %ProcessId%
taskkill /f /pid %ProcessId%
PAUSE

我使用GitBash和我错误如下时运行

taskkill //PID XXXX 错误:PID为7420的进程无法终止。原因:这 进程只能强制终止(使用/F选项)。

所以使用//F如下,工作良好

任务杀戮 //F //PID XXXX

第一步

netstat -vanp tcp | grep 8888

例子

tcp4     0      0    127.0.0.1.8888   *.*    LISTEN      131072 131072  76061    0
tcp46    0      0    *.8888           *.*    LISTEN      131072 131072  50523    0

第二步:找到你的pid并杀死他们

对我来说

sudo kill -9 76061 50523