Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers. We don’t allow questions about general computing hardware and software on Stack Overflow. You can edit the question so it’s on-topic for Stack Overflow. Closed 5 months ago. The community reviewed whether to reopen this question 5 months ago and left it closed: Original close reason(s) were not resolved Improve this question
How can I remove the current process/application which is already assigned to a port?
For example: localhost:8080
Step 1:
Open up cmd.exe (note: you may need to run it as an administrator, but this isn't always necessary), then run the below command:
netstat -ano | findstr :
(Replace <PORT>
with the port number you want, but keep the colon)
https://i.stack.imgur.com/lEpCZ.png
The area circled in red shows the PID (process identifier). Locate the PID of the process that's using the port you want.
Step 2:
Next, run the following command:
taskkill /PID
(No colon this time)
https://i.stack.imgur.com/8k64x.png
Lastly, you can check whether the operation succeeded or not by re-running the command in "Step 1". If it was successful you shouldn't see any more search results for that port number.
I know that is really old question, but found pretty easy to remember, fast command to kill apps that are using port.
Requirements: npm@5.2.0^ version
npx kill-port 8080
You can also read more about kill-port here: https://www.npmjs.com/package/kill-port
Step 1 (same is in accepted answer written by KavinduWije):
netstat -ano | findstr :yourPortNumber
Change in Step 2 to:
tskill typeyourPIDhere
Note: taskkill
is not working in some git bash terminal
There are two ways to kill the processes
Option 01 - Simplest and easiest Requirement : npm@5.2.0^ version Open the Command prompt as Administrator and give the following command with the port (Here the port is 8080)
npx kill-port 8080
Option 02 - Most commonly used
Step 01 Open Windows command prompt as Administrator
Step 02 Find the PID of the port you want to kill with the below command: Here port is 8080
netstat -ano|findstr "PID :8080"
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 18264
Step 03 Kill the PID you received above with the below command (In my case PID is 18264)
taskkill /PID 18264 /f
With Windows 10 default tools:
Step one:
Open Windows PowerShell as Administrator
Step two:
Find PID (ProcessID) for port 8080:
netstat -aon | findstr 8080
TCP 0.0.0.0:8080 0.0.0.0:0 LISTEN 77777
Step three:
Kill the zombie process:
taskkill /f /pid 77777
where "77777" is your PID
set /p port="Enter port: "
-> Input port FOR /F "tokens=5" %%T IN ('netstat -aon ^| findstr %port% ') DO ( SET /A ProcessId=%%T) &GOTO SkipLine
:SkipLine
-> Extracts PID into variable taskkill /f /pid %ProcessId%
-> Kills the task cmd /k
-> Keep the window open
@echo off
If you are using GitBash
Step one:
netstat -ano | findstr :8080
Step two:
taskkill /PID typeyourPIDhere /F
(/F
forcefully terminates the process)
The simplest solution — the only one I can ever remember:
In Windows Powershell
Say we want to stop a process on port 8080
Get the process:
netstat -ano | findstr :8080
Stop the process
stop-process 82932
If you already know the port number, it will probably suffice to send a software termination signal to the process (SIGTERM):
kill $(lsof -t -i :PORT_NUMBER)
lsof -nt -i4TCP:9001
as well.
Simple CMD is working me. Easy to remember
find the port number which you want kill and run the below cmd
npx kill-port 8080
After complete the Port get stopped and getting this message
npx: installed 3 in 13.796s
Process on port 8080 killed
For use in command line:
for /f "tokens=5" %a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %a
For use in bat-file:
for /f "tokens=5" %%a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %%a
tokens=5
?
In Windows PowerShell version 1 or later to stop a process on port 3000 type:
Stop-Process (,(netstat -ano | findstr :3000).split() | foreach {$[$.length-1]}) -Force
As suggested by @morganpdx here`s a more PowerShell-ish, better version:
Stop-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess -Force
'Stop-Process' is not recognized as an internal or external command,
Stop-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess -Force
Open command prompt and issue below command
netstat -ano|findstr "PID :8888"
Output will show the process id occupying the port
https://i.stack.imgur.com/pLq08.png
Issue below command to kill the PID
taskkill /pid 8912 /f
You will receive the output as below
SUCCESS: The process with PID 8860 has been terminated.
If you can use PowerShell on Windows you just need :
Get-Process -Id (Get-NetTCPConnection -LocalPort "8080").OwningProcess | Stop-Process
For Windows users, you can use the CurrPorts tool to kill ports under usage easily:
https://i.stack.imgur.com/wSqrm.png
I was running zookeeper on Windows and wasn't able to stop ZooKeeper running at 2181 port using zookeeper-stop.sh, so tried this double slash "//" method to taskkill. It worked
1. netstat -ano | findstr :2181
TCP 0.0.0.0:2181 0.0.0.0:0 LISTENING 8876
TCP [::]:2181 [::]:0 LISTENING 8876
2.taskkill //PID 8876 //F
SUCCESS: The process with PID 8876 has been terminated.
Let's Automate!
If you fall into this issue much often like me, make an .bat file and run it to end process.
create a bat file "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..."
Run this file by double clicking and
Enter port number (then it will list process with PID) Enter PID to kill
Done
(Optional)
Set to path environment so that you can access this file from anywhere.
Most probably you will know how to add an new path to env. But here's how if you don't
Step 1 of 4
Search ENV on start menu
https://i.stack.imgur.com/Bry76.png
Step 2 of 4
Select Environment Variables
https://i.stack.imgur.com/AxVDy.png
Step 3 of 4
Select 'path' and click Edit button
https://i.stack.imgur.com/3c0sS.png
Step 4 of 4
Click 'New' add the path where .bat file is stored. Since I saved it on '../Documents/bats' folder I am adding this path. Your path will depend on where you save this file.
https://i.stack.imgur.com/wSdzm.png
Open CMD and test. Remember you filename will the word to run this file. Since I saved the .bat file as 'killport.bat' => 'killport' is the word to run it.
https://i.stack.imgur.com/zaLxh.png
If you're using Windows Terminal then the killing process might be little less tedious. I've been using windows terminal and kill PID
works fine for me to kill processes on the port as the new Windows Terminal supports certain bash commands. For example: kill 13300
So, the complete process will look like this-
Open Windows Terminal
Type the following command to show processes running on the port you're looking to kill processes. netstat -ano | findstr :PORT
Type following to kill the process. kill PID
For Example:
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>
See when I typed the first command to list processes on the port it returned empty. That means all processes are killed now.
Update: kill
is an alias for Stop-Process. Thanks, @FSCKur for letting us know.
kill
. Ill post here if i find.
kill
. It's NOTHING to do with your choice of terminal. As any fool knows, in PS you use Get-Command to understand what command you're running, and it shows you that, on Windows, kill is an alias for Stop-Process. On Linux it's not an alias but the native command.
Run cmd as administrator. Then type this code in there.
netstat -ano | findstr :<8080>
Then you can see the PID run on your port. Then copy that PID number. ( PID is a unique number that helps identify a hardware product or a registered software product.) And type below code line and press enter.
taskkill /PID <Enter the copied PID Number> /F
You can do by run a bat file:
@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
In case you want to do it using Python: check Is it possible in python to kill process that is listening on specific port, for example 8080?
The answer from Smunk works nicely. I repeat his code here:
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
the first step
netstat -vanp tcp | grep 8888
example
tcp4 0 0 127.0.0.1.8888 *.* LISTEN 131072 131072 76061 0
tcp46 0 0 *.8888 *.* LISTEN 131072 131072 50523 0
the second step: find your PIDs and kill them
in my case
sudo kill -9 76061 50523
netstat -ano | findstr :PORT
kill PI
One line solution using GitBash:
tskill `netstat -ano | grep LISTENING | findstr :8080 | sed -r 's/(\s+[^\s]+){4}(.*)/\1/'`
Replace 8080 with the port your server is listening to.
If you need to use it often, try adding to your ~/.bashrc
the function:
function killport() {
tskill `netstat -ano | findstr LISTENING | findstr :$1 | sed -r 's/^(\s+[^\s]+){4}(\d*)$/\1/'`
}
and simply run
killport 8080
bash: taskill: command not found
tskill
instead of taskill
.
If you use powershell 7+ this worked for me. Just add this function in your $PROFILE file.
function killport([parameter(mandatory)] [string] $uport){
if($upid = (Get-NetTCPConnection -LocalPort $uport -ErrorAction Ignore).OwningProcess){kill $upid}
}
then simply use killport 8080
or if you prefer just the command you can try this:
kill $(Get-NetTCPConnection -LocalPort 8761 -ErrorAction Ignore).OwningProcess
I wrote a tiny node js script for this. Just run it like this: node killPort.js 8080
or whatever port you need to kill. Save the following to a killPort.js
file:
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);
})
}
});
}
Here is a script to do it in WSL2
PIDS=$(cmd.exe /c netstat -ano | cmd.exe /c findstr :$1 | awk '{print $5}')
for pid in $PIDS
do
cmd.exe /c taskkill /PID $pid /F
done
I am using GitBash and I error like below when ran
taskkill //PID XXXX ERROR: The process with PID 7420 could not be terminated. Reason: This process can only be terminated forcefully (with /F option).
So used //F like below and worked fine
taskkill //F //PID XXXX
We can avoid this by simple restarting IIS, using the below command:
IISRESET
Success story sharing
taskkill //PID 12552 //F
localhost:5000
that didn't terminate. e.g.taskkill //F //PID 16660
.taskkill /PID PORT_NUMBER /F