Как я могу удалить текущий процесс / приложение, которое уже назначено на порт?

Например: localhost: 8080

Ответы (27)

Шаг 1:

Откройте cmd.exe (примечание: может запустить его от имени администратора, но это не всегда необходимо), затем выполните следующую команду:

netstat -ano | findstr: <ПОРТ>

(замените на номер порта, который вы хотите, но оставьте двоеточие)

Область, обведенная красным, показывает PID (идентификатор процесса). Найдите PID процесса, который использует нужный порт.

Шаг 2:

Далее выполните следующую команду:

taskkill / PID / F

(на этот раз без двоеточия)

Наконец, вы можете проверить, успешно ли завершилась операция, повторно запустив команду в «Шаге 1». В случае успеха вы не должны больше видеть результаты поиска для этого номера порта.

Для пользователей Windows вы можете использовать инструмент CurrPorts, чтобы легко убить используемые порты:

Enter image description here

Если вы уже знаете номер порта, вероятно, будет достаточно послать процессу сигнал программного завершения (SIGTERM):

kill $(lsof -t -i :PORT_NUMBER)

Есть два способа убить процессы

Вариант 01 - Самый простой и легкий

Требование: npm@5.2.0^ версия

Откройте командную строку от имени администратора и введите следующую команду с портом (здесь порт 8080)

npx kill-port 8080

Вариант 02 - наиболее часто используемый

  • Шаг 01

    Откройте командную строку Windows от имени администратора
  • Шаг 02

    Найдите PID порта, который вы хотите убить, с помощью следующей команды: Здесь порт 8080
netstat -ano|findstr "PID :8080"

TCP 0.0.0.0:8080 0.0.0.0:0 ПРОСЛУШИВАНИЕ 18264

  • Шаг 03

    Убейте PID, который вы получили выше, с помощью следующей команды (в моем случае PID 18264)
taskkill /PID 18264 /f

Если вы можете использовать PowerShell в Windows, вам просто нужно:

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

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

Самое простое решение - единственное, что я могу вспомнить:

В Windows Powershell

Допустим, мы хотим остановить процесс на порту 8080

  1. Получить процесс:
netstat -ano | findstr :8080
  1. Остановить процесс
stop-process 82932
netstat -ano | findstr :PORT
kill PI

Я запускал zookeeper в Windows и не смог остановить ZooKeeper, работающий на порту 2181, используя zookeeper-stop.sh, поэтому попробовал этот метод с двойной косой чертой «//» для taskkill. Сработало

     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.

Можно сделать, запустив 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

Этого можно избежать, просто перезапустив IIS с помощью следующей команды:

IISRESET

Вот сценарий для этого в 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

Я написал для этого крошечный скрипт node 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);
            })
        }
    });
}

Шаг 1 (то же самое в принятом ответ написано KavinduWije):

netstat -ano | findstr: yourPortNumber

Изменить на шаге 2 на:

tskill typeyourPIDhere 

Примечание: taskkill не работает в некоторых терминалах git bash

Если вы хотите сделать это с помощью 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

Запускаем cmd от имени администратора. Затем введите здесь этот код.

netstat -ano | findstr :<8080>

Затем вы можете увидеть, как PID работает на вашем порту. Затем скопируйте этот номер PID. (PID - это уникальный номер, который помогает идентифицировать аппаратный продукт или зарегистрированный программный продукт.) Введите ниже строку кода и нажмите ввод.

taskkill /PID  /F

Я знаю, что это действительно старый вопрос, но его довольно легко запомнить, быстрая команда для уничтожения приложений, использующих порт.

Требования: npm@5.2.0^ версия

npx kill-port 8080

Вы также можете узнать больше о kill-порте здесь: https://www.npmjs.com/package/kill-port

У меня работает Simple CMD. Легко запомнить

найдите номер порта, который вы хотите убить, и запустите команду ниже

npx kill-port 8080

После завершения порт останавливается и появляется это сообщение

npx: installed 3 in 13.796s
Process on port 8080 killed

первый шаг

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

Если вы используете GitBash

Шаг первый:

netstat -ano | findstr :8080

Шаг второй:

taskkill /PID typeyourPIDhere /F 

(/ F принудительно завершает процесс)

Однострочное решение с использованием 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 PowerShell версии 1 или более поздней, чтобы остановить процесс на порту 3000, введите:

Stop-Process (, (netstat -ano | findstr: 3000) .split () | foreach {$[$.length-1]}) -Force


Как предлагает @morganpdx, вот более PowerShell-ish, лучшая версия:

Stop-Process -Id (Get-NetTCPConnection -LocalPort 3000) .OwningProcess -Force

Откройте командную строку и введите команду ниже

netstat -ano|findstr "PID :8888"

Вывод покажет идентификатор процесса, занимающего порт

enter image description here

Введите команду ниже, чтобы убить PID

taskkill /pid 8912 /f

Вы получите результат, как показано ниже

SUCCESS: The process with PID 8860 has been terminated.

Я последовал этому ответу: https://stackoverflow.com/a/37626811/7286223

netstat -ano

перечислит все прослушиваемые протоколы, порты и процессы.

Вместо этого используйте это:

netstat -plten

Здесь мы находим порт и его pid. Затем мы можем остановить этот процесс, набрав

kill -9 pid

здесь -9 означает мягкое удаление.

Если вы используете Windows Terminal, то процесс уничтожения может быть немного менее утомительным. Я использую терминал Windows, и kill PID отлично работает для меня, чтобы убить процессы на порту, поскольку новый терминал Windows поддерживает определенные команды bash. Например: убить 13300

Итак, весь процесс будет выглядеть так:

  • Открыть терминал Windows
  • Введите следующую команду, чтобы показать процессы, запущенные на порту, который вы хотите убить. netstat -ano | findstr: ПОРТ
  • Введите следующее, чтобы остановить процесс. kill 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 10:

  • Шаг первый:

Откройте Windows PowerShell от имени администратора

  • Шаг второй:

Найти PID (ProcessID) для порта 8080:

netstat -aon | findstr 8080

TCP 0.0.0.0:8080 0.0.0.0:0 СЛУШАТЬ 77777

  • Шаг третий:

Убить зомби-процесс:

taskkill /f /pid 77777

, где «77777» - ваш PID

Для использования в командной строке:

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

Для использования в bat-файле:

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

2022 WebDevInsider