Найти 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

Выход:

СЛУШАТЬ