Как узнать, какой процесс прослушивает порт TCP или UDP в Windows?
Я столкнулся с этим, пытаясь запустить Tomcat в режиме отладки под IntelliJ, лучшим решением для меня оказалось изменение конфигурации отладочного транспорта (File-> Settings-> Build / exe / deploy-> Debugger) с «сокета» на "Общая память".
netstat -aof | findstr :8080 (поменять 8080 на любой порт)
@DavidJesus не показывает процесс в Windows 10.
@SmitJohnth Я использую netstat -aof | findstr :3306, чтобы найти процесс MySQL в Windows 10, и он отлично работает.





Get-Process -Id (Get-NetTCPConnection -LocalPort YourPortNumberHere).OwningProcess
Get-Process -Id (Get-NetUDPEndpoint -LocalPort YourPortNumberHere).OwningProcess
C:\> netstat -a -b
(Добавьте -n, чтобы он не пытался разрешить имена хостов, что сделает его намного быстрее.)
Обратите внимание на рекомендацию Дэйна для TCPView. Выглядит очень полезно!
-а Отображает все подключения и порты прослушивания.
-b Отображает исполняемый файл, участвующий в создании каждого соединения или прослушивающего порта. В некоторых случаях в хорошо известных исполняемых файлах размещается несколько независимых компонентов, и в этих случаях отображается последовательность компонентов, участвующих в создании соединения или порта прослушивания. В этом случае имя исполняемого файла находится в [] внизу, вверху - компонент, который он вызвал, и так далее, пока не будет достигнут TCP / IP. Обратите внимание, что эта опция может занять много времени и не сработает, если у вас нет достаточных разрешений.
-n Отображает адреса и номера портов в числовой форме.
-о Отображает идентификатор процесса-владельца, связанный с каждым соединением.
и taskkill / PID <pid>, чтобы затем завершить процесс, используя / F, если необходимо.
Возможно, вам придется запустить оболочку командной строки от имени администратора, иначе вы можете получить сообщение об ошибке о недостаточных правах. При щелчке правой кнопкой мыши cmd.exe используйте параметр «Запуск от имени администратора».
Работает, но требует повышенного разрешения. Shift + щелкните правой кнопкой мыши значок команды -> запустить от имени администратора
При использовании -o для отображения PID вы можете затем направить его в grep для номера порта (если установлен cygwin или msys), поскольку pid отображается в той же строке, а не имя процесса, которое отображается в отдельной строке.
Иногда я не могу запустить свой httpd-сервер Apache, потому что PID 4 по какой-то причине использует порт 80. Проблема в том, что процесс с PID 4 - это хорошо "Система". Перезагрузка помогает, но если кто-нибудь знает причину или способ узнать, почему Система использует порт 80, я все уши.
@BradWilson "-b" - недопустимая опция, используйте netstat -a -d
@BradWilson и @Sathish Похоже, что параметры netstat не такие стандартные. Пришлось использовать netstat -a -n -p. Опции -b и -d недоступны. Параметр -o предназначен для таймеров. Параметры -p отображают имя программы и PID. (в Debian 8).
netstat 1.42 (2001-04-15) не имеет флага -b
Получив PID - скажем, 1234 - вы можете использовать tasklist /fi "pid eq 1234", чтобы узнать имя и другие детали процесса.
В моей системе вывод этой команды, помимо того, что его было ужасно трудно читать из-за переноса, переполнял буфер командной строки. Обычно я предпочитаю инструменты командной строки (хотя, надо признать, мне гораздо удобнее работать с командной строкой Linux, чем с Windows), но в этом случае я нашел графический интерфейс Resource Monitor, предложенный @bcorso, гораздо более полезным.
@sebastian_t Для системного процесса (PID 4) есть netsh http show urlacl. Он показывает резервирование системных URL-адресов.
Использование | grep :80 полезно для поиска определенного порта. если установлен grep.
netstat -a -b переполнила весь экран cmd. Я не мог найти pid, который искал, пока он не исчез. Мне нужен был способ найти порт определенного процесса с помощью pid.
Код PowerShell на самом деле не работает, я получаю эту ошибку: Get-NetTCPConnection: не удается обработать преобразование аргумента для параметра LocalPort. Невозможно преобразовать значение «portNumber» в тип «System.UInt16 []». Ошибка: «Невозможно преобразовать значение« portNumber »в тип« System.UInt16 ». Ошибка:« Входная строка была в неправильном формате ».
Это не работает в PS3.0 - почему люди, работающие с Windows, больше не перечисляют версии? Для какой версии PowerShell предназначены эти команды?
@RodionSychev Команда powershell ожидает, что вы замените "portNumber" на номер порта, который вы ищете. В сообщении об ошибке указано, что «portNumber» не является числом.
Ух ты, только Microsoft могла придумать синтаксис, который невозможно запомнить, и никто не запомнит его.
Get-NetTCPConnection: не удается обработать преобразование аргумента для параметра «LocalPort». Невозможно преобразовать значение «portNumber» в тип «System.UInt16 []». Ошибка: «Невозможно преобразовать значение« portNumber »в тип« System.UInt16 ». Ошибка:« Входная строка была в неправильном формате ».
Я получаю сообщение об ошибке. Есть идеи? «Get-NetTCPConnection: не найдено ни одного объекта MSFT_NetTCPConnection со свойством« LocalPort », равным« 49923 ». Проверьте значение свойства и повторите попытку».
Для Windows:
netstat -aon | find /i "listening"
+1 Но имейте в виду, если ваши окна работают на другом языке, кроме английского, вам придется изменить "прослушивание" на родной термин. Например. netstat -aon | find /i "abhören" для немецкого языка.
В моем случае это не сработало, возможно, из-за знака кавычек, но решение netstat -aon | findstr ПРОСЛУШИВАНИЕ работает отлично!
Это работает, не требуя повышенных привилегий.
Я получаю сообщение об ошибке при попытке запустить эту команду на W10 15063.729 с помощью PowerShell: FIND: Parameter format not correct
Как этот ответ имеет отношение к «выяснению, какой процесс [имя] прослушивает порт в Windows?»
Используйте // i вместо / i при использовании git bash в Windows
Используйте TCPView, если вам нужен графический интерфейс для этого. Это старое приложение Sysinternals, которое выкупила Microsoft.
На мой взгляд, это лучший вариант, тем более что все процессы находятся в одном списке, и вы можете закрыть процессы напрямую, щелкнув их правой кнопкой мыши.
Кроме того, это не требует прав администратора!
Если вы хотите использовать для этого инструмент с графическим интерфейсом, есть TCPView от Sysinternals.
Откройте окно командной строки (от имени администратора). В «Пуск \ Поле поиска» введите «cmd», затем щелкните правой кнопкой мыши «cmd.exe» и выберите «Запуск от имени администратора».
Введите следующий текст и нажмите Enter.
netstat -abno-а Отображает все подключения и порты прослушивания.
-b Отображает исполняемый файл, участвующий в создании каждого соединения или порт прослушивания. В некоторых случаях известные исполняемые файлы размещают несколько независимых компонентов, и в этих случаях последовательность компонентов, участвующих в создании соединения или порт прослушивания отображается. В этом случае исполняемый файл имя находится в [] внизу, вверху - компонент, который он вызвал, и так далее, пока не будет достигнут TCP / IP. Обратите внимание, что эта опция может занять много времени и выйдет из строя, если у вас недостаточно разрешения.
-n Отображает адреса и номера портов в числовой форме.
-о Отображает идентификатор процесса-владельца, связанный с каждым соединением.
Найдите порт, который вы слушаете, в разделе «Локальный адрес».
Посмотрите на имя процесса прямо под ним.
ПРИМЕЧАНИЕ. Чтобы найти процесс в диспетчере задач
Обратите внимание на PID (идентификатор процесса) рядом с портом, на который вы смотрите.
Откройте диспетчер задач Windows.
Выберите вкладку "Процессы".
Найдите PID, который вы отметили при выполнении netstat на шаге 1.
Если вы не видите столбец PID, нажмите View / Select Columns. Выберите PID.
Убедитесь, что установлен флажок «Показать процессы от всех пользователей».
Следуйте этим инструментам: От cmd: C:\> netstat -anob с привилегиями Администратор.
Все с sysinternals.com.
Если вы просто хотите знать, какие процессы выполняются и какие потоки связаны с каждым процессом, я рекомендую изучить wmic. Это замечательный инструмент командной строки, который дает вам гораздо больше, чем вы можете себе представить.
Пример:
c:\> wmic process list brief /every:5
Приведенная выше команда будет отображать краткий список всех процессов каждые 5 секунд. Чтобы узнать больше, вы можете просто использовать команду Windows /?, например,
c:\> wmic /?
c:\> wmic process /?
c:\> wmic prcess list /?
И так далее. :)
PortMon (ссылка позади монитора портов) предназначен для мониторинга портов серийный и параллельно, а не сетевых портов.
Использовать:
netstat -a -o
Это показывает PID процесса, запущенного на определенном порту.
Запомните идентификатор процесса, перейдите на вкладку Диспетчер задач и службы или сведения и завершите процесс с таким же идентификатором PID.
Таким образом, вы можете убить процесс, запущенный на определенном порту в Windows.
Вы можете получить дополнительную информацию, если выполните следующую команду:
netstat -aon | find /i "listening" |find "port"
использование команды «Найти» позволяет фильтровать результаты. find /i "listening" будет отображать только порты, которые «прослушивают». Обратите внимание: вам нужно, чтобы /i игнорировал регистр, иначе вы наберете find "LISTENING". | find "port" ограничит результаты только теми, которые содержат конкретный номер порта. Обратите внимание, что при этом он также будет фильтровать результаты, в которых номер порта есть где угодно в строке ответа.
Попытка FWIW запустить это в PowerShell v2.0 приводит к ошибке FIND: Parameter format not correct. Вам нужно добавить пробел после критериев поиска. У вас останется netstat -aon | find /i "listening" | find "1234 ".
Замените «порт» выше на свой порт, например «5000».
@себя. Я все еще получаю эту ошибку с PS 5.1, даже после добавления пробела после трубы. Вы знаете, что происходит?
@NickeManarinin & @self либо сначала смените powershell на cmd (просто введите cmd и нажмите Enter, затем повторите команду), либо используйте вместо него эту команду в powershell: netstat -aon | find / i "{back tick}" прослушивание{back tick} "" | find "{back tick}" port{back tick} "" (<- обратите внимание на экранированные кавычки - извините за термин back tick, поскольку я не могу добавить фактический символ, поскольку он считает, что это обрезка)
netstat -ao и netstat -ab сообщают вам о приложении, но если вы не системный администратор, вы получите сообщение «Запрошенная операция требует повышения прав».
Это не идеально, но если вы используете Sysinternals 'Обозреватель процессов, вы можете перейти к свойствам определенных процессов и посмотреть на вкладку TCP, чтобы узнать, используют ли они интересующий вас порт. Это что-то вроде иголки и стога сена , но, может быть, это кому-то поможет ...
Если вы не являетесь администратором, вы не сможете использовать Process Explorer (или даже Диспетчер задач Windows> Диспетчер ресурсов), чтобы получить эту информацию из любого процесса, который изначально не принадлежит вам.
Чтобы получить список всех идентификаторов процессов-владельцев, связанных с каждым подключением:
netstat -ao |find /i "listening"
Если вы хотите убить какой-либо процесс, укажите идентификатор и используйте эту команду, чтобы порт стал свободным
Taskkill /F /IM PID of a process
это не учитывает прослушивание портов UDP
Для Windows есть собственный графический интерфейс:
Меню Пуск → Все программы → Аксессуары → Системные инструменты → Монитор ресурсов
или запустите resmon.exe,
или из вкладки Диспетчер задач → Спектакль.

Также показывает статус брандмауэра привязки (последний столбец). Очень практично.
Вы должны быть администратором (или входить в эту группу), чтобы запустить это.
@bcorso, что значит привязка к "неуказанный адрес"?
Также может быть запущен из вкладки «Производительность» диспетчера задач, по крайней мере, в Windows 10. (Не проверял другие версии.)
Вы также можете запустить монитор ресурсов на вкладке производительности диспетчера задач, нажав кнопку Open Resource Monitor. Команда perfmon /res из командной строки также позволяет открыть монитор ресурсов.
Комментарий @ user4836454 выше НЕ правильный: Монитор ресурсов ДЕЙСТВИТЕЛЬНО показывает порты со слушателями, даже если нет сетевого подключения к этим портам. Просто загляните в раздел «Порты прослушивания» вместо раздела «TCP-соединения».
Похоже, что при этом упускаются некоторые из портов TCP, которые иногда используются, даже если они используются до такой степени, что другие приложения, которым они нужны, не могут запуститься.
По какой-то причине искомый pid не был указан в мониторе ресурсов. В конце концов, пришлось запустить команду netstat.
@Pacerier Одному интерфейсу Ethernet может быть назначено несколько IP-адресов (обычно на серверах). «Не указано» означает, что он прослушивает порт по любому адресу, который использует сервер. Напротив, будет отображаться IP-адрес (а), на который будет отвечать программа.
идеально. ты сэкономил мне время.
Сначала мы находим идентификатор процесса той конкретной задачи, которую нам нужно устранить, чтобы освободить порт:
Тип
netstat -n -a -o
После выполнения этой команды в командной строке Windows (cmd) выберите pid, который я считаю последним столбцом. Предположим, это 3312.
Теперь введите
taskkill /F /PID 3312
Теперь вы можете выполнить перекрестную проверку, набрав команду netstat.
ПРИМЕЧАНИЕ: иногда Windows не позволяет запустить эту команду непосредственно в CMD, поэтому сначала вам нужно выполнить следующие действия:
Из меню «Пуск» -> командная строка (щелкните правой кнопкой мыши командную строку и запустите от имени администратора)
Рекомендую CurrPorts от NirSoft.
CurrPorts может фильтровать отображаемые результаты. TCPView не имеет этой функции.
Примечание. Вы можете щелкнуть правой кнопкой мыши по сокетному соединению процесса и выбрать «Закрыть выбранные TCP-соединения» (вы также можете сделать это в TCPView). Это часто устраняет проблемы с подключением, которые возникают у меня с Outlook и Lync после переключения VPN. С CurrPorts вы также можете закрывать соединения из командной строки с параметром «/ close».
Используйте только одну команду:
for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /FI "PID eq %a"
где 9000 следует заменить на номер вашего порта.
выход будет содержать что-то вроде этого:
Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
java.exe 5312 Services 0 130,768 K
Объяснение:
он выполняет итерацию по каждой строке вывода следующей команды:
netstat -aon | findstr 9000
из каждой строки извлекается PID (%a - имя здесь не важно) (PID - это элемент 5th в этой строке) и передается следующей команде
tasklist /FI "PID eq 5312"
Если вы хотите пропускатьзаголовок и возврат командная строка, вы можете использовать:
echo off & (for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /NH /FI "PID eq %a") & echo on
Выход:
java.exe 5312 Services 0 130,768 K
Хороший ответ, но вы должны изменить его на findstr :9000, если нет, вы даже найдете приложения, которые содержат номер (например, при поиске «80» вы найдете приложения также на портах 80, 800, 8000).
Получить номер порта из PID в Windows очень просто.
Следующие шаги:
Перейдите к запуску → введите cmd → нажмите Enter.
Напишите следующую команду ...
netstat -aon | findstr [port number]
(Примечание: не включайте квадратные скобки.)
Нажмите Enter ...
Затем cmd предоставит вам подробную информацию о службе, работающей на этом порту, вместе с PID.
Откройте диспетчер задач, перейдите на вкладку службы и сравните PID с идентификатором cmd, и все.
В PowerShell 5 в Windows 10 или Windows Server 2016 запустите командлет Get-NetTCPConnection. Я предполагаю, что он также должен работать на более старых версиях Windows.
Выходные данные Get-NetTCPConnection по умолчанию по какой-то причине не включают идентификатор процесса, и это немного сбивает с толку. Однако вы всегда можете получить его, отформатировав вывод. Вы ищете недвижимость OwningProcess.
Если вы хотите узнать идентификатор процесса, который прослушивает порт 443, выполните эту команду:
PS C:\> Get-NetTCPConnection -LocalPort 443 | Format-List
LocalAddress : ::
LocalPort : 443
RemoteAddress : ::
RemotePort : 0
State : Listen
AppliedSetting :
OwningProcess : 4572
CreationTime : 02.11.2016 21:55:43
OffloadState : InHost
Отформатируйте вывод в таблицу со свойствами, которые вы ищете:
PS C:\> Get-NetTCPConnection -LocalPort 443 | Format-Table -Property LocalAddress, LocalPort, State, OwningProcess
LocalAddress LocalPort State OwningProcess
------------ --------- ----- -------------
:: 443 Listen 4572
0.0.0.0 443 Listen 4572
Если вы хотите узнать имя процесса, выполните эту команду:
PS C:\> Get-Process -Id (Get-NetTCPConnection -LocalPort 443).OwningProcess
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
143 15 3448 11024 4572 0 VisualSVNServer
Введите команду: netstat -aon | findstr :DESIRED_PORT_NUMBER
Например, если я хочу найти порт 80: netstat -aon | findstr :80
Этот ответ был первоначально отправлен на этот вопрос.
Для Windows, если вы хотите найти материал, который прослушивает или подключен к порту 1234, выполните в командной строке cmd следующее:
netstat -na | find "1234"
Просто откройте командную оболочку и введите (например, ваш порт - 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
Это, как уже упоминалось, здесь.
К вашему сведению / для всех, кто интересуется: это либо findstr 123456 (без кавычек), либо find "123456" (с кавычками). (@ Джош)
Использование PowerShell ... ... это будет ваш друг (замените 8080 на свой номер порта):
netstat -abno | Select-String -Context 0,1 -Pattern 8080
Пример вывода
> TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 2920
[tnslsnr.exe]
> TCP [::]:8080 [::]:0 LISTENING 2920
[tnslsnr.exe]
Итак, в этом примере tnslsnr.exe (база данных OracleXE) прослушивает порт 8080.
Быстрое объяснение
Select-String используется для фильтрации длинных выходных данных netstat для соответствующих строк.-Pattern проверяет каждую строку на соответствие регулярному выражению.-Context 0,1 будет выводить 0 ведущих строк и 1 завершающую строку для каждого совпадения с шаблоном.Переключатель -b, упомянутый в большинстве ответов, требует, чтобы у вас были права администратора на машине. Вам действительно не нужны повышенные права, чтобы получить имя процесса!
Найдите pid процесса, запущенного в номере порта (например, 8080)
netstat -ano | findStr "8080"
Найдите имя процесса по pid
tasklist /fi "pid eq 2216"
Используйте приведенный ниже пакетный сценарий, который принимает имя процесса в качестве аргумента и выдает выходные данные netstat для процесса.
@echo off
set procName=%1
for /f "tokens=2 delims=," %%F in ('tasklist /nh /fi "imagename eq %1" /fo csv') do call :Foo %%~F
goto End
:Foo
set z=%1
echo netstat for : "%procName%" which had pid "%1"
echo ----------------------------------------------------------------------
netstat -ano |findstr %z%
goto :eof
:End
Netstat:
-o процесс владения
netstat -bano | findstr "7002"
netstat -ano > ano.txt
Инструмент Currports помогает искать и фильтровать
Программно вам нужны вещи из iphlpapi.h, например GetTcpTable2 (). Такие структуры, как MIB_TCP6ROW2, содержат PID владельца.
Чтобы узнать, какой конкретный процесс (PID) какой порт использует:
netstat -anon | findstr 1234
Где 1234 - это PID вашего процесса. [Перейдите в Диспетчер задач → вкладка Службы / Процессы, чтобы узнать PID вашего приложения.]
Следует отметить, что вам не нужно устанавливать дважды флаг -n. -ano достаточно.
Это однострочное решение, которое мне помогает. Просто замените 3000 своим портом:
$P = Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess; Stop-Process $P.Id
Обновлено: изменен kill на Stop-Process для более PowerShell-подобного языка
Вероятно, вы не хотите автоматически убивать процесс. Я бы отделил эту команду kill и объяснил ее. Не хочу, чтобы какой-нибудь плохой пользователь скопировал это, не подумав внимательно.
И если вы собираетесь использовать полное решение PowerShell, измените kill на Stop-Process Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess | Stop-Process
Откройте командную строку - Пуск → Пробег → cmd или меню Пуск → Все программы → Аксессуары → Командная строка.
Тип
netstat -aon | findstr '[port_number]'
Замените [port_number] фактическим номером порта, который вы хотите проверить, и нажмите Enter.
Тип
tasklist | findstr '[PID]'
Замените [PID] номером из предыдущего шага и нажмите Enter.
В Win 10: ваша команда на шагах 2 и 4 не будет работать, если вы не замените простые кавычки двойными кавычками. Следует сказать netstat -aon | findstr "[номер_порта]"
Это решение не требует повышенного разрешения. Ткс!
Основываясь на ответах с Информация и убийство, мне полезно объединить их в одна команда. И вы можете запустить это из cmd, чтобы получить информацию о процессе, который прослушивает данный порт (пример 8080):
for /f "tokens=3 delims=LISTENING" %i in ('netstat -ano ^| findStr "8080" ^| findStr "["') do @tasklist /nh /fi "pid eq %i"
Или, если вы хотите его убить:
for /f "tokens=3 delims=LISTENING" %i in ('netstat -ano ^| findStr "8080" ^| findStr "["') do @Taskkill /F /IM %i
Вы также можете поместить эту команду в файл bat (они будут немного отличаться - замените %i на %%i):
portInfo.batfor /f "tokens=3 delims=LISTENING" %%i in (
'netstat -ano ^| findStr "%1" ^| findStr "["'
) do @tasklist /nh /fi "pid eq %%i"
portKill.batfor /f "tokens=3 delims=LISTENING" %%i in (
'netstat -ano ^| findStr "%1" ^| findStr "["'
) do @Taskkill /F /IM %%i
Тогда вы из cmd можете сделать это:
portInfo.bat 8080
или же
portKill.bat 8080
Это может быть полезный сценарий. Однако я безуспешно пробовал это в CMD, а также в PowerShell 6. Возможно, вы могли бы улучшить свой ответ, предоставив немного больше деталей.
Первая часть работает? Проблема только с "битой"? Есть некоторые различия в передаче переменных: (%% i)
@Manfred Я пробовал это на трех разных Windows 10. Например, .\portInfo.bat 800 в PowerShell дает что-то вроде этого: C:\work>for /F "tokens=3 delims=LISTENING" %i in ('netstat -ano | findStr "800" | findStr "["') do (tasklist /fi "pid eq %i" ) C:\work>(tasklist /fi "pid eq 4" ) Image Name PID Session Name Session# Mem Usage ========================= ======== ================ =========== ============ System 4 Services 0 1,820 K
Извините, не повезло. Я поместил эту команду в файл с именем portInfo.bat в терминале PowerShell, а затем выполнил .\portInfo.bat 8080. На выходе было просто содержимое командного файла. Возможно, я что-то упускаю. Обратите внимание: я использую PowerShell 6.2.3 в Windows 10. Я также пробовал использовать его в обычной командной строке, но результат был таким же: вывод содержимого скрипта. Я уверен, что мне не хватает важной информации для работы.
@Manfred Содержимое файла должно быть напечатано, как я показал в предыдущем коммите. Может, на порте 8080 ничего не было. Пробовали первую команду? А для этого порта что-то вернуло? for /f "tokens=3 delims=LISTENING" %i in ('netstat -ano ^| findStr "8080" ^| findStr "["') do tasklist /fi "pid eq %i"
Почему бы не добавить /nh: @tasklist /nh /fi "pid eq %i"? И именно дверь: Findstr ":8080"
Найти pid, использующий порт 8000
netstat -aon | findstr '8000'
Чтобы убить этот процесс в окнах
taskkill /pid pid /f
где pid - это идентификатор процесса, который вы получаете от первой команды
netstat -aon | findstr 8000. Цитировать указывать не нужно.
PID - это значение, возвращаемое первой командой в последнем столбце.
Если кому-то нужен аналог для macOS, как я, вот он:
lsof -i tcp:8080
После того, как вы получите PID процесса, вы можете убить его с помощью:
kill -9 <PID>
Вы также можете проверить зарезервированные порты с помощью приведенной ниже команды. Например, Hyper-V зарезервировал несколько портов.
netsh int ipv4 show excludedportrange protocol=tcp
netstat -aof | findstr :8080 (поменять 8080 на любой порт)
Currports - это инструмент, который помогает искать и фильтровать nirsoft.net/utils/cports.html