Как убить процесс в настоящее время, используя порт на локальном хосте в Windows? [на удерживании]

242

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

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

Теги:
cmd
localhost
port
command-prompt

14 ответов

605
Лучший ответ

Шаг 1

Запустите командную строку в качестве администратора. Затем запустите следующую команду. введите номер своего порта в yourPortNumber

netstat -ano | findstr: yourPortNumber

Изображение 7288

Окрашенная область с красным цветом показывает идентификатор PID (идентификатор процесса)

Шаг 2

Затем вы выполните эту команду после идентификации PID.

taskkill/PID typeyourPIDhere/F

Изображение 7289

P.S. Выполните первую команду еще раз, чтобы проверить, доступен ли процесс или нет. Вы получите пустую строку, если процесс успешно завершен.

  • 0
    не работает. все еще процесс это дисплей
  • 9
    Работает отлично. В моем случае Tomcat работал в порту 8080, и мне нужно было снова запустить приложение Spring. i.imgur.com/aVwSYvR.png Большое вам спасибо.
Показать ещё 7 комментариев
76

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

netstat -ano | findstr :yourPortNumber

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

tskill typeyourPIDhere 

Это, так как taskkill не работает в команде git bash

  • 0
    не нашел его для меня
  • 1
    @TzviGregoryKaidanov с какой проблемой вы сталкиваетесь?
Показать ещё 3 комментария
61

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

Первый шаг:

netstat -ano | findstr :8080

Шаг второй:

taskkill /PID typeyourPIDhere /F 

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

  • 0
    двойной разрез не работал для меня
  • 2
    @ kylexy1357 попробуйте с одной косой чертой. «Двойная косая черта» - это escape-символ, предшествующий /, который не нужен для некоторых оболочек.
19

В Windows PowerShell версии 1 или новее, чтобы остановить процесс на порту 3000 типа:

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


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

Стоп-процесс -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess -Force

  • 0
    'Stop-Process' is not recognized as an internal or external command,
  • 3
    Я считаю, что это работает: Stop-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess -Force
Показать ещё 3 комментария
10

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

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
  • 1
    Если вы хотите сделать это в .bat, замените% a на %% a
  • 0
    Это лучше, чем ручной шаг 1 + шаг 2 (нам нравится автоматизировать вещи), спасибо!
3

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

kill $(lsof -t -i :PORT_NUMBER)
  • 0
    Если вы знаете, что порт использует IPv4, вы можете также выполнить команду lsof -nt -i4TCP:9001 .
3

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

3

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

Вы можете сделать, запустив файл 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
1

с помощью стандартных инструментов Windows 10:

1.) Найдите PID, используя порт 8080:

netstat -aon | findstr 8080

TCP 0.0.0.0:8080 0.0.0.0:0 LISTEN 11880

2.) Убить запущенный процесс:

taskkill /F /PID 11880

где "11880" - ваш идентификатор процесса

1

Я запускал 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.
0

я был убит 1 порт из TaskKill в Windows, мы можем восстановить этот порт? и могу ли я найти какой порт убит???? @Jvkbrdid @gmail.com

0

Работает! Но нам нужно открыть командную строку с правами администратора.

0

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

IISRESET

Ещё вопросы

Сообщество Overcoder
Наверх
Меню