722

How can I remove the current process/application which is already assigned to a port?

For example: localhost:8080

Peter Mortensen
  • 28,342
  • 21
  • 95
  • 123
KavinduWije
  • 23,917
  • 4
  • 11
  • 16

23 Answers23

1653

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 :<PORT>

(Replace <PORT> with the port number you want, but keep the colon)

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 <PID> /F

(No colon this time)

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.

Mujeeb
  • 665
  • 6
  • 14
KavinduWije
  • 23,917
  • 4
  • 11
  • 16
  • @HardikMandankaa Is it the _same_ process? Some software may be set up to relaunch the listening process if it is killed. – TripeHound Sep 22 '17 at 11:26
  • 31
    I had to enter escape characters when running taskkill: `taskkill //PID 12552 //F` – Robert Feb 15 '18 at 15:26
  • 1
    accepted answer will not work for services which are set up to restart on failure (this is not linux) – nurettin Apr 20 '18 at 10:42
  • 1
    I got processId 0 on port 80. If I try to kill it I get "ERROR: The process with PID 0 could not be terminated. Reason: This is critical system process. Taskkill cannot end this process." – Totty.js Nov 28 '18 at 10:49
  • The colon symbol has to be in a very specific place. Can't change spaces or this command won't work. Otherwise this also works without colon: "netstat -ano | findstr 8080" – Chemist Jan 04 '19 at 19:47
  • What work for me is `taskkill //PID myProcessId -F` – Ashwani Panwar Jan 06 '20 at 13:01
  • 2020-04-03, Windows10, Python 3.6.6, using Git Bash: confirming that using the double forward slash worked for me as well. I needed to kill a Flask app process on `localhost:5000` that didn't terminate. e.g. `taskkill //F //PID 16660` . – VISQL Apr 03 '20 at 17:32
  • 1
    i think you meant PID_NUMBER and not PORT_NUMBER in ``taskkill /PID PORT_NUMBER /F`` – Marcin Kulik May 04 '20 at 16:16
  • Thanks for such a clear and nice explanation. It worked. – Alok Ranjan Nov 27 '20 at 07:21
  • with colon not working netstat -ano | findstr :, without colon working fine netstat -ano | findstr – Bharathiraja Dec 24 '20 at 05:24
163

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

Community
  • 1
  • 1
afsarkhan10182
  • 1,783
  • 1
  • 10
  • 15
132

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

Java
  • 1,881
  • 1
  • 7
  • 19
  • 2
    How to automate the process and combine these two commands together in one bat file if there is no possibility to view the cmd output and then write new command manually? – Serob_b Sep 20 '19 at 18:59
  • 4
    @Serob_b `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 – Vikrant Jan 10 '20 at 05:44
  • @Vikrant Is there a way to hide all the commands and just show "Enter port: " and "SUCCESS: The process with PID 35264 has been terminated." ? – CrazyVideoGamez Jul 10 '20 at 13:51
  • 1
    @CrazyVideoGamez `@echo off` – VB_Dojnaz Jul 29 '20 at 09:36
104

If you are using GitBash

Step one:

netstat -ano | findstr :8080

Step two:

taskkill /PID typeyourPIDhere /F 

(/F forcefully terminates the process)

Uchenna Nwanyanwu
  • 3,114
  • 3
  • 30
  • 58
Ara Yaghsizian
  • 1,159
  • 1
  • 6
  • 9
  • 2
    @kylexy1357 try with a single slash. The "double slash" is an escape character that precedes the /, which is not needed for some shells – Robert Feb 15 '18 at 15:30
83

I know that is really old question, but found pretty easy to remember, fast command to kill app 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

Rafał Figura
  • 1,097
  • 7
  • 15
50

Result for Windows Command Prompt

In my case, 8080 is the port I want to kill
And 18264 is the PID listening on port 8080
So the task you have to kill is the PID for that particular port

C:\Users\Niroshan>netstat -ano|findstr "PID :8080"

Proto Local Address Foreign Address State PID
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 18264

taskkill /PID 18264 /f

killshot13
  • 107
  • 1
  • 8
Niroshan Ratnayake
  • 932
  • 1
  • 7
  • 13
41

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)
Fellow Stranger
  • 25,431
  • 22
  • 134
  • 188
31

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

todorm
  • 444
  • 4
  • 6
31

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
marvedly
  • 53
  • 5
Mahesh Narwade
  • 479
  • 5
  • 6
  • 1
    If you want to do it in a .bat, replace %a for %%a – Mahesh Narwade Jun 29 '18 at 10:10
  • 1
    This answer was the only one line command to work for me so it's really good. I have a task running on two ports which cause the error "ERROR: The process "6552" not found." because the task has already been exited. – tscpp Jun 29 '20 at 07:15
  • Need really far scroll down to get a **"programmatic"** answer like this. BTw what is `tokens=5`? – Timo Mar 30 '21 at 17:45
15

For Windows users, you can use the CurrPorts tool to kill ports under usage easily:

Enter image description here

Peter Mortensen
  • 28,342
  • 21
  • 95
  • 123
Zuhair Taha
  • 1,811
  • 1
  • 26
  • 29
14

Open command prompt and issue below command

netstat -ano|findstr "PID :8888"

Output will show the process id occupying the port

enter image description here

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.
Waqas Ahmed
  • 3,743
  • 3
  • 31
  • 42
11

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.
Peter Mortensen
  • 28,342
  • 21
  • 95
  • 123
driven_spider
  • 465
  • 4
  • 15
11

If you can use PowerShell on Windows you just need :

Get-Process -Id (Get-NetTCPConnection -LocalPort "8080").OwningProcess | Stop-Process
11

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 5555 killed
Deepak
  • 193
  • 2
  • 15
8

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.

lazycipher
  • 290
  • 3
  • 11
  • I know this works because I tested it, I'm trying to find documentation around it, do you have any? – DanStarns May 26 '20 at 10:40
  • @DanStarns, I've found only this so far! https://docs.microsoft.com/en-us/windows/terminal/ – lazycipher May 26 '20 at 21:38
  • Thanks for your time, it's not quite the page I'm looking for, a page with all the functions provided in the terminal such as `kill`. Ill post here if i find. – DanStarns May 27 '20 at 04:37
  • 1
    I haven't found much about this as of now. Please post if you find anything. – lazycipher May 28 '20 at 06:10
  • I have to downvote because of your confusion about `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. – FSCKur Jan 22 '21 at 21:21
  • @FSCKur, I don't think it was already there earlier(talking about alias)! It's something new that I found. Thanks for letting me know about the alias thing. I'll mention this thing in the answer. – lazycipher Jan 27 '21 at 04:47
  • Appreciated; sorry about my previous sharp tone. However, there's still confusion between terminal and shell. You have provided a Powershell answer. A user running bash in WT wouldn't get the same results. If you change "WT" to "PS" then your answer becomes correct... however, it's a PS community guideline to not use aliases in code or help, so I'd still not be happy. – FSCKur Jan 28 '21 at 14:05
4

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
Peter Mortensen
  • 28,342
  • 21
  • 95
  • 123
Kardi Teknomo
  • 933
  • 10
  • 17
  • This worked for a socket that uses a particular port number in Google Cloud as well! Thanks a ton – peevesy Apr 19 '20 at 01:12
4

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
flopcoder
  • 1,065
  • 9
  • 18
4

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
ruscon
  • 79
  • 2
  • 9
  • 5
    Even if this is a correct answer. The question was asked for windows environment and your answer is invalid on a Linux system. – Pranav Raut Aug 29 '20 at 10:37
4
netstat -ano | findstr :PORT
kill PI
harun ugur
  • 1,157
  • 11
  • 14
3

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

  1. Enter port number (then it will list process with PID)
  2. 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

enter image description here

Step 2 of 4

Select Environment Variables

enter image description here

Step 3 of 4

Select 'path' and click Edit button

enter image description here

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.

enter image description here

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.

enter image description here if do enjoy! else share how you done it here

Dharman
  • 21,838
  • 18
  • 57
  • 107
2

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
Italo Borssatto
  • 12,895
  • 6
  • 58
  • 81
0

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
MyrionSC2
  • 1,105
  • 1
  • 10
  • 15
-2

We can avoid this by simple restarting IIS, using the below command:

IISRESET
Peter Mortensen
  • 28,342
  • 21
  • 95
  • 123