如何在Windows中使用localhost上的端口杀死当前进程?

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

例如:localhost:8080

2593269 次浏览

步骤1:

打开cmd.exe(注意:您需要以管理员身份运行它,但这并不总是必要的),然后运行以下命令:

netstat -ano | findstr :<PORT>

(将<PORT>替换为您想要的端口号,但保留冒号)

红色圆圈区域显示PID(进程识别号)。找到使用所需端口的进程的PID。

步骤2:

接下来,运行以下命令:

(这次没有结肠)

最后,您可以通过重新运行“步骤1”中的命令来检查操作是否成功。如果成功,您不应该再看到该端口号的搜索结果。

如果您正在使用GitBash

步骤一:

netstat -ano | findstr :8080

步骤二:

taskkill /PID typeyourPIDhere /F

/F强制终止进程)

步骤1(相同的是在接受答案写的KavindWije):

netstat -ano | findstr :yourPortNumber

步骤2更改为:

tskill typeyourPIDhere

说明taskkill在一些git bash终端中不工作

WindowsPowerShell版本1或更高版本中,要在端口3000上停止进程,请键入:

停止进程(,(netstat-ano|findstr: 3000).拆分()|foreach{$[$.length-1]})-Force


正如@morganpdx所建议的,这里有一个更PowerShell-ish,更好的版本:

停止进程-Id(Get-NetTCPConnection-LocalPort 3000)。拥有进程-Force

在命令行中使用:

for /f "tokens=5" %a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %a

在bat-file中使用:

for /f "tokens=5" %%a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %%a

如果您想使用Python执行此操作:check在python中是否有可能杀死正在侦听特定端口的进程,例如8080?

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

from psutil import process_iterfrom 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 SIGKILLcontinue

我们可以通过使用以下命令简单地重新启动IIS来避免这种情况:

IISRESET

对于Windows用户,您可以使用CurrPorts工具轻松杀死正在使用的端口:

在此处输入图片描述

你可以通过运行bat文件来做到这一点:

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

我在Windows上运行zooKeeper,无法使用zookeeper-stop.sh阻止ZooKeeper在2181端口运行,所以尝试了这个双斜杠“//”方法来任务杀死。它起作用了

     1. netstat -ano | findstr :2181TCP    0.0.0.0:2181           0.0.0.0:0              LISTENING       8876TCP    [::]:2181              [::]:0                 LISTENING       8876
2.taskkill //PID 8876 //FSUCCESS: The process with PID 8876 has been terminated.

如果您已经知道端口号,那么向进程发送软件终止信号(SIGTERM)可能就足够了:

kill $(lsof -t -i :PORT_NUMBER)

使用Windows 10默认工具:

  • 步骤一:

以管理员身份打开Windows PowerShell

  • 步骤二:

查找端口8080的PID(ProcessID):

netstat -aon | findstr 8080

TCP0.0.0.0:80800.0.0.0: 0 LISTEN 77777

  • 步骤三:

杀死僵尸过程:

taskkill /f /pid 77777

其中“77777”是您的PID

使用GitBash的单行解决方案:

 tskill `netstat -ano | grep LISTENING | findstr :8080 | sed -r 's/(\s+[^\s]+){4}(.*)/\1/'`

8080替换为您的服务器正在监听的端口。

如果您需要经常使用它,请尝试在~/.bashrc中添加以下函数:

function killport() {tskill `netstat -ano | findstr LISTENING | findstr :$1 | sed -r 's/^(\s+[^\s]+){4}(\d*)$/\1/'`}

并简单地运行

killport 8080

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

所以,整个过程看起来像这样——

  • 打开Windows终端
  • 键入以下命令以显示在要终止进程的端口上运行的进程。netstat -ano | findstr :PORT
  • 键入以下以终止进程。kill PID

例如:

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

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

更新:kill停止进程的别名。谢谢@FSCKur让我们知道。

我知道这是一个非常古老的问题,但发现很容易记住,快速命令来杀死使用端口的应用程序。

要求:npm@5.2.0版本

npx kill-port 8080

你也可以在这里阅读更多关于kiel-port的信息:https://www.npmjs.com/package/kill-port

有两种方法可以终止进程

选项01-最简单和最简单

要求:npm@5.2.0版本

以管理员身份打开命令提示符,并使用端口给出以下命令(这里的端口是8080)

npx kill-port 8080

选项02-最常用的

  • 第01步

    以管理员身份打开Windows命令提示符
  • 第02步

    使用以下命令找到要杀死的端口的PID:这里的端口是8080
netstat -ano|findstr "PID :8080"

TCP0.0.0.0:80800.0.0.0: 0监听

  • 第03步

    使用以下命令杀死上面收到的PID(在我的情况下PID是18264)
taskkill /PID 18264 /f

这是一个在WSL2中执行此操作的脚本

PIDS=$(cmd.exe /c netstat -ano | cmd.exe /c findstr :$1 | awk '{print $5}')for pid in $PIDSdocmd.exe /c taskkill /PID $pid /Fdone

第一步

netstat -vanp tcp | grep 8888

示例

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

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

在我的情况下

sudo kill -9 76061 50523

如果您可以在Windows上使用PowerShell,则只需:

Get-Process -Id (Get-NetTCPConnection -LocalPort "8080").OwningProcess | Stop-Process
netstat -ano | findstr :PORTkill PI

打开命令提示符并发出下面的命令

netstat -ano|findstr "PID :8888"

输出将显示占用端口的进程ID

在此处输入图片描述

下面的命令杀死PID

taskkill /pid 8912 /f

您将收到如下输出

SUCCESS: The process with PID 8860 has been terminated.

简单的CMD很管用很容易记住

找到你想要杀死的端口号并运行下面的cmd

npx kill-port 8080

完成端口后停止并收到此消息

npx: installed 3 in 13.796sProcess on port 8080 killed

让我们自动化!

如果您像我一样经常遇到这个问题,请创建一个. bat文件并运行它以结束进程。

创建蝙蝠文件"killport.bat"

set /P port="Enter port : "echo showing process running with port %port%
netstat -ano|findstr "PID :%port%"
set /P pid="Enter PID to kill : "
taskkill /pid %pid% /f
set /P exit="Press any key to exit..."

双击并运行此文件

  1. 输入端口号(然后它将列出带有PID的进程)
  2. 输入PID杀死

成交

(可选)

设置为路径环境,以便您可以从任何地方访问此文件。

您很可能知道如何向env添加新路径。但如果你不知道

步骤1/4

在开始菜单上搜索ENV

在此处输入图片描述

步骤2/4

选择环境变量

在此处输入图片描述

步骤3/4

选择路径并单击编辑按钮

在此处输入图片描述

步骤4/4

单击“新建”添加存储. bat文件的路径。由于我将其保存在“… /Documents/bats”文件夹中,我正在添加此路径。您的路径将取决于您保存此文件的位置。

在此处输入图片描述

打开CMD并测试。请记住您的文件名将是运行此文件的单词。由于我将. bat文件保存为'killport.bat'=>'mlport'是运行它的单词。

输入图片描述如果享受!在这里分享你是如何做到的

以管理员身份运行cmd。然后在那里输入此代码。

netstat -ano | findstr :<8080>

然后您可以看到端口上运行的PID。然后复制该PID号。(PID是一个有助于识别硬件产品或注册软件产品的唯一编号。)并在代码行下方键入并按回车键。

taskkill /PID <Enter the copied PID Number> /F

我为此编写了一个小节点js脚本。只需像这样运行它:node killPort.js 8080或您需要杀死的任何端口。将以下内容保存到killPort.js文件:

const { exec } = require('child_process');const fs = require(`fs`);
const port = process.argv.length > 2 ? process.argv[2] : ``;if (!port || isNaN(port)) console.log(`port is required as an argument and has to be a number`);else {exec(`netstat -ano | findstr :${port}`, (err, stdout, stderr) => {if (!stdout) console.log(`nobody listens on port ${port}`);else {const res = stdout.split(`\n`).map(s => s.trim());const pid = res.map(s => s.split(` `).pop()).filter(s => s).pop();console.log(`Listener of ${port} is found, its pid is ${pid}, killing it...`);exec(`taskkill /PID ${pid} /F`, (err, stdout, stderr) => {if (!stdout) console.log(`we tried to kill it, but not sure about the result, please run me again`);else console.log(stdout);})}});}

最简单的解决方案-我唯一记得的解决方案:

在Windows Powershell

假设我们想在端口8080上停止一个进程

  1. 获取过程:
netstat -ano | findstr :8080
  1. 停止进程
stop-process 82932

我正在使用GitBash,运行时出现如下错误

任务杀死//PID XXXX

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

所以使用//F像下面和工作正常

//F//PID XXXX

如果您使用PowerShell 7+,这对我有用。只需在您的$PROFILE文件中添加此功能。

function killport([parameter(mandatory)] [string] $uport){if($upid = (Get-NetTCPConnection -LocalPort $uport -ErrorAction Ignore).OwningProcess){kill $upid}}

然后简单地使用killport 8080

或者如果您只喜欢命令,您可以尝试以下操作:

kill $(Get-NetTCPConnection -LocalPort 8761 -ErrorAction Ignore).OwningProcess