Найти PID процесса, который использует порт в Windows
Мой сервис падает при запуске с классическим:
java.rmi.server.ExportException: Listen failed on port: 9999
Как я могу найти процесс его убийства?
Ответы
Ответ 1
Просто откройте командную оболочку и введите (скажем, ваш порт 123456):
netstat -a -n -o | find "123456"
Вы увидите все, что вам нужно.
Заголовки:
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:37 0.0.0.0:0 LISTENING 1111
Ответ 2
Найдите PID процесса, который использует порт в Windows (например, порт: "9999")
netstat -aon | find "9999"
-a
Отображает все соединения и порты прослушивания.
-o
Отображает идентификатор процесса владения, связанный с каждым соединением.
-n
Отображает адреса и номера портов в числовой форме.
Выход:
TCP 0.0.0.0:9999 0.0.0.0:0 LISTENING 15776
Затем убить процесс с помощью PID
taskkill /F /PID 15776
/F
- указывает на принудительное завершение процесса (ов).
Примечание: вам может потребоваться дополнительное разрешение (запуск от администратора), чтобы убить некоторые определенные процессы
Ответ 3
После некоторого возни со сценарием я пришел к этому действию. Скопируйте и сохраните его в файле .bat:
FOR /F "usebackq tokens=5" %%i IN ('netstat -aon ^| find "3306"') DO taskkill /F /PID %%i
Измените 'find "3306" в номере порта, который должен быть свободным. Затем запустите файл от имени администратора. Это убьет все процессы, запущенные на этом порту.
Ответ 4
Если вы хотите сделать это программно, вы можете использовать некоторые из следующих параметров в скрипте PowerShell:
$processPID = $($(netstat -aon | findstr "9999")[0] -split '\s+')[-1]
taskkill /f /pid $processPID
Тем не мение; Имейте в виду, что чем точнее вы можете быть, тем точнее будет ваш результат PID. Если вы знаете, на каком хосте должен находиться порт, вы можете сильно его сузить. netstat -aon | findstr "0.0.0.0:9999"
netstat -aon | findstr "0.0.0.0:9999"
вернет только одно приложение и, скорее всего, правильное. Только поиск по номеру порта может привести к возврату процессов, в которых только 9999
, например:
TCP 0.0.0.0:9999 0.0.0.0:0 LISTENING 15776
UDP [fe80::81ad:9999:d955:c4ca%2]:1900 *:* 12331
Наиболее вероятный кандидат обычно заканчивается первым, но если процесс завершился до того, как вы запустили свой скрипт, вы можете получить PID 12331 и убить неправильный процесс.
Ответ 5
Это помогает найти PID, используя номер порта.
lsof -i tcp:port_number
Ответ 6
Команда:
netstat -aon | findstr 4723
Выход:
TCP 0.0.0.0:4723 0.0.0.0:0 LISTENING 10396
Теперь вырежьте идентификатор процесса, "10396", используя команду for
в Windows.
Команда:
for /f "tokens=5" %a in ('netstat -aon ^| findstr 4723') do @echo %~nxa
Выход:
10396
Если вы хотите сократить 4-е число значения, означает "СЛУШАТЬ", то введите команду в Windows.
Команда:
for /f "tokens=4" %a in ('netstat -aon ^| findstr 4723') do @echo %~nxa
Выход:
СЛУШАТЬ