Как убить процесс в настоящее время, используя порт на локальном хосте в Windows?
Как удалить текущий процесс / приложение, которое уже назначено порту? (Пример:- localhost:8080)
30 ответов
Шаг 1
Запустите командную строку от имени администратора. Затем выполните приведенную ниже команду упоминания. введите номер вашего порта в yourPortNumber
netstat -ano | findstr:ваш номер порта
Обведенная красным кружком область показывает PID (идентификатор процесса)
Шаг 2
Затем вы выполняете эту команду после определения PID.
тасккилл /PID типа yourPID здесь / F
PS Выполните первую команду еще раз, чтобы проверить, доступен ли процесс или нет. Вы получите пустую строку, если процесс успешно завершен.
Я знаю, что это действительно старый вопрос, но его довольно легко запомнить, быстрая команда для удаления приложения, использующего порт.
Требования: версия npm@5.2.0^
npx kill-port 8080
Вы также можете узнать больше о kill-port здесь: https://www.npmjs.com/package/kill-port
Результат для windows
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
с инструментами Windows10 по умолчанию:
1.) Найти PID (ProcessID) для порта 8080:
netstat -aon | findstr 8080
TCP 0.0.0.0:8080 0.0.0.0:0 LISTEN 11999
2.) Убить процесс зомби:
taskkill /F /PID 11999
где "11999" - ваш PID
Шаг 1 (то же самое в принятом ответе, написанном KavinduWije):
netstat -ano | findstr :yourPortNumber
Измените на шаге 2:
tskill typeyourPIDhere
Это с taskkill
не работает в какой-то команде git bash
Если вы используете GitBash
Первый шаг:
netstat -ano | findstr :8080
Шаг второй:
taskkill /PID typeyourPIDhere /F
(/F
принудительно завершает процесс)
Самое простое решение - единственное, что я могу вспомнить:
В Windows Powershell
Допустим, мы хотим остановить процесс на порту 8080
- Получите процесс:
netstat -ano | findstr :8080
- Остановить процесс
stop-process 82932
Если вы уже знаете номер порта, вероятно, будет достаточно отправить сигнал завершения работы программы (SIGTERM):
kill $(lsof -t -i :PORT_NUMBER)
Для использования в командной строке:
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
У меня работает Simple CMD. Легко вспомнить
найдите номер порта, который вы хотите убить, и запустите команду ниже
npx kill-port 8080
После завершения порт остановится и появится это сообщение
npx: installed 3 in 13.796s
Process on port 5555 killed
В Windows PowerShell версии 1 или новее для остановки процесса на порту 3000 введите:
Stop-Process (, (netstat -ano | findstr: 3000).split () | foreach {$[$.length-1]}) -Force
Как подсказывает @morganpdx, здесь больше PowerShell-иш, лучшая версия:
Stop-Process -Id (Get-NetTCPConnection -LocalPort 3000). OwningProcess -Force
Откройте командную строку и введите команду ниже
netstat -ano|findstr "PID :8888"
Вывод покажет идентификатор процесса, занимающего порт
Выполните команду ниже, чтобы убить PID
taskkill /pid 8912 /f
Вы получите результат, как показано ниже
SUCCESS: The process with PID 8860 has been terminated.
Если вы можете использовать PowerShell в Windows, вам просто нужно:
Get-Process -Id (Get-NetTCPConnection -LocalPort "8080").OwningProcess | Stop-Process
Для пользователей Windows вы можете использовать инструмент CurrPorts, чтобы легко убивать используемые порты.
Давайте автоматизируем!
Если вы, как и я, часто сталкиваетесь с этой проблемой, создайте файл .bat и запустите его, чтобы завершить процесс.
создать 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..."
Запустите этот файл, дважды щелкнув и
- Введите номер порта (тогда он отобразит процесс с PID)
- Введите PID, чтобы убить
Сделанный
(По желанию)
Установите путь к среде, чтобы вы могли получить доступ к этому файлу из любого места.
Скорее всего, вы будете знать, как добавить новый путь в env. Но вот как, если вы этого не сделаете
Шаг 1 из 4
Искать ENV в меню "Пуск"
Шаг 2 из 4
Выберите переменные среды
Шаг 3 из 4
Выберите «путь» и нажмите кнопку «Изменить».
Шаг 4 из 4
Нажмите «Создать» и укажите путь, по которому хранится файл .bat. Поскольку я сохранил его в папке "../Documents/bats", я добавляю этот путь. Ваш путь будет зависеть от того, где вы сохраните этот файл.
Откройте CMD и проверьте. Помните, что ваше имя файла будет словом для запуска этого файла. Поскольку я сохранил файл .bat как «killport.bat» => «killport» - это слово для его запуска.
если вам понравится! еще расскажите, как вы это сделали здесь
Я запускал 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.
Запускаем cmd от имени администратора. Затем введите этот код туда.
netstat -ano | findstr :<8080>
Затем вы можете увидеть, как PID работает на вашем порту. Затем скопируйте этот номер PID. (PID - это уникальный номер, который помогает идентифицировать аппаратный продукт или зарегистрированный программный продукт.) Введите строку кода под строкой и нажмите Enter.
taskkill /PID <Enter the copied PID Number> /F
Если вы используете Windows Terminal, то процесс уничтожения может быть немного менее утомительным. Я использую терминал Windows иkill PID
у меня отлично работает, чтобы убить процессы на порту, поскольку новый терминал Windows поддерживает определенные команды bash. Например:kill 13300
Итак, весь процесс будет выглядеть так:
- Откройте Терминал Windows
- Введите следующую команду, чтобы показать процессы, запущенные на порту, который вы хотите убить.
netstat -ano | findstr :PORT
- Введите следующее, чтобы остановить процесс.
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>
Посмотрите, когда я набрал первую команду для вывода списка процессов на порту, который она вернула пустым. Это означает, что все процессы сейчас убиты.
Если вы используете powershell 7+, это сработало для меня. Просто добавьте эту функцию в свой файл $PROFILE.
function killport([parameter(mandatory)] [string] $uport){
if($upid = (Get-NetTCPConnection -LocalPort $uport -ErrorAction Ignore).OwningProcess){kill $upid}
}
или, если вы предпочитаете только команду, вы можете попробовать это:
kill $(Get-NetTCPConnection -LocalPort 8761 -ErrorAction Ignore).OwningProcess
Вы можете сделать, запустив файл 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
Первый шаг
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
Если вы хотите сделать это с помощью 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
Однострочное решение с использованием 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
Я использую GitBash, и при запуске я делаю ошибку, как показано ниже.
тасккилл //PID XXXX
ОШИБКА: Не удалось завершить процесс с PID 7420. Причина: этот процесс можно завершить только принудительно (с параметром /F).
Поэтому использовал //F, как показано ниже, и работал нормально
тасккилл //F //PID XXXX
Я написал для этого крошечный скрипт 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);
})
}
});
}
Я последовал этому ответу: /questions/26315866/kak-ustranit-oshibku-javanetbindexception-adres-uzhe-ispolzuetsya-jvmbind/26315867#26315867
netstat -ano перечислит все прослушиваемые протоколы, порты и процессы.
Вместо этого используйте netstat -plten . Здесь мы находим порт и его pid. Затем мы можем убить этот процесс, набрав
kill -9 pid здесь -9 означает мягкое удаление.
Вот сценарий для этого в 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
Этого можно избежать, просто перезапустив IIS с помощью приведенной ниже команды.
IISRESET
Для пользователей Mac: Шаг 1:
ps -ax | grep <port number>
Шаг 2:
sudo kill -9 <Task ID>