Кто занимает порт Windows

Обновлено: 21.11.2024

Найти идентификатор процесса, использующего данный порт в Windows
Иногда случается так, что вы пытаетесь запустить Tomcat, и он жалуется: «Порт 8080, требуемый сервером Tomcat v7.0 на локальном хосте, уже используется». Это означает, что в фоновом режиме уже запущен процесс, который занял порт 8080. Итак, как определить процесс в диспетчере задач Windows, который использует порт 8080? Я уверен, что должен быть javaw.exe . Но есть ли лучший способ определить, какой процесс в Windows использует данный номер порта? Да…

Как найти идентификатор процесса, использующего порт в Windows

Наш друг netstat поможет нам определить процесс. netstat может составить список запущенных процессов и отобразить такую ​​информацию, как идентификатор процесса, порт и т. д. Из этого списка мы можем отфильтровать процессы, которые предоставили порт, с помощью команды findstr.

Список процессов по номеру порта

Вывод

  • -a — отображает все соединения и прослушиваемые порты.
  • -o — отображает идентификатор процесса-владельца, связанный с каждым подключением.
  • -n — отображает адреса и номера портов в числовой форме.

Мы можем использовать netstat для получения списка всех процессов.

Список всех процессов по PID

Убить процесс по PID

Как только мы определим PID процесса, мы можем убить процесс с помощью команды taskkill.

Где /F указывает на принудительное завершение процесса(ов). Обратите внимание, что вам может потребоваться дополнительное разрешение (запуск от администратора), чтобы завершить некоторые определенные процессы.

Или вы можете использовать наш старый доверенный диспетчер задач Windows, чтобы убить процесс для данного идентификатора процесса. Если PID не отображается в вашем диспетчере задач, вы можете включить его, щелкнув правой кнопкой мыши заголовок таблицы на вкладке «Сведения», нажмите «Выбрать столбцы» и затем проверьте PID.

Закрыто. Этот вопрос не соответствует правилам переполнения стека. В настоящее время ответы не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме Stack Overflow.

Закрыто 16 дней назад.

Сообщество рассматривало возможность повторного открытия этого вопроса 16 дней назад и оставило его закрытым:

Первоначальные причины закрытия не были устранены

Как узнать, какой процесс прослушивает порт TCP или UDP в Windows?

Я столкнулся с этим при попытке запустить Tomcat в режиме отладки под IntelliJ. Лучшим решением для меня оказалось изменение конфигурации отладочного транспорта (Файл->Настройки->Сборка/exe/развертывание->Отладчик) с " сокет" в "общую память".

@SmitJohnth Я использую netstat -aof | findstr :3306, чтобы найти процесс MySQL в Windows 10 и отлично работает.

34 ответа 34

(Добавьте -n, ​​чтобы он не пытался разрешать имена хостов, что сделает его намного быстрее.)

Обратите внимание на рекомендацию Дейна относительно TCPView. Выглядит очень полезно!

-a Отображает все подключения и прослушиваемые порты.

-b Отображает исполняемый файл, участвующий в создании каждого соединения или порта прослушивания. В некоторых случаях хорошо известные исполняемые файлы содержат несколько независимых компонентов, и в этих случаях отображается последовательность компонентов, участвующих в создании соединения или порта прослушивания. В этом случае имя исполняемого файла находится в [] внизу, вверху — компонент, который он вызвал, и так далее, пока не будет достигнут TCP/IP. Обратите внимание, что этот вариант может занять много времени и не будет работать, если у вас нет достаточных разрешений.

-n Отображает адреса и номера портов в числовой форме.

-o Отображает идентификатор процесса-владельца, связанный с каждым соединением.

чтобы затем завершить процесс, используя /F, если это необходимо.

Возможно, вам придется запустить оболочку командной строки от имени администратора, иначе вы можете получить сообщение об ошибке о недостаточных правах. Используйте параметр «Запуск от имени администратора», щелкнув правой кнопкой мыши cmd.exe.

Получив PID (скажем, 1234), вы можете использовать список задач /fi "pid eq 1234", чтобы узнать имя и другие детали процесса.

@RodionSychev Команда powershell ожидает, что вы замените «portNumber» на номер порта, который вы ищете. В сообщении об ошибке указано, что "portNumber" не является числом.

Есть собственный графический интерфейс для Windows:

Меню "Пуск" → Все программыСтандартныеСистемные инструментыМонитор ресурсов

или запустите resmon.exe ,

или из Диспетчера задач → вкладка Производительность.

Также можно запустить с вкладки "Производительность" диспетчера задач, по крайней мере, в Windows 10. (Другие версии не проверял.)

Комментарий @user4836454 выше НЕверен: Resource Monitor ДЕЙСТВИТЕЛЬНО показывает порты с прослушивателями, даже если к этим портам нет сетевого подключения. Просто загляните в раздел «Прослушивание портов» вместо раздела «TCP-соединения».

+1 Но имейте в виду, что если ваши окна работают на языке, отличном от английского, вам придется изменить «прослушивание» на родной термин. Например. netstat -аон | найти /i "abhören" для немецкого языка.

В моем случае это не сработало, возможно, из-за знака кавычек, но решение netstat -aon | findstr ПРОСЛУШИВАНИЕ работает отлично!

Я получаю сообщение об ошибке при попытке запустить эту команду на W10 15063.729 с помощью PowerShell: НАЙТИ: неверный формат параметра

Используйте TCPView, если вам нужен графический интерфейс. Это старое приложение Sysinternals, которое Microsoft выкупила.

По моему мнению, это лучший вариант, тем более что все процессы находятся в одном списке, и вы можете закрыть процессы напрямую, щелкнув их правой кнопкой мыши.

Переключатель -b, упомянутый в большинстве ответов, требует наличия прав администратора на компьютере. Вам действительно не нужны повышенные права, чтобы получить имя процесса!

Найти pid процесса, работающего по номеру порта (например, 8080)

Найти имя процесса по pid

Вы можете получить дополнительную информацию, если выполните следующую команду:

Использование команды "Найти" позволяет фильтровать результаты. find /i "прослушивание" отобразит только те порты, которые "прослушиваются". Обратите внимание: вам нужен /i, чтобы игнорировать регистр, иначе вы бы набрали find «LISTENING». | find "port" ограничит результаты только теми, которые содержат определенный номер порта. Обратите внимание, что в этом случае он также будет фильтровать результаты, содержащие номер порта в любом месте строки ответа.

Попытка FWIW запустить это в PowerShell v2.0 приводит к ошибке FIND: неправильный формат параметра . Вам нужно добавить пробел после критериев поиска. Это оставит вас с netstat -aon | найти /i "слушать" | найдите "1234".

@себя. Я все еще получаю эту ошибку с PS 5.1, даже после добавления пробела после вертикальной черты. Вы знаете, что происходит?

@NickeManarinin & @self либо сначала измените powershell на cmd (просто введите cmd и нажмите Enter, затем повторите команду), либо в powershell используйте вместо этого эту команду: netstat -aon |find /i " " listening < обратная отметка>"" |find " <обратная отметка>"порт <обратная отметка>"" (обратная отметка, так как я не могу добавить фактический символ, так как он думает, что это вырезка)

Откройте окно командной строки (от имени администратора). В поле "Пуск\Поиск" введите "cmd", затем щелкните правой кнопкой мыши "cmd.exe" и выберите "Запуск от имени администратора"

Введите следующий текст и нажмите Enter.

netstat -abno

-a Отображает все подключения и прослушиваемые порты.

-b Отображает исполняемый файл, участвующий в создании каждого соединения или порта прослушивания. В некоторых случаях хорошо известные исполняемые файлы содержат несколько независимых компонентов, и в этих случаях отображается последовательность компонентов, участвующих в создании соединения или порта прослушивания. В этом случае имя исполняемого файла находится в [] внизу, вверху — компонент, который он вызвал, и так далее, пока не будет достигнут TCP/IP. Обратите внимание, что этот вариант может занять много времени и не будет работать, если у вас нет достаточных разрешений.

-n Отображает адреса и номера портов в числовой форме.

-o Отображает идентификатор процесса-владельца, связанный с каждым соединением.

Найдите порт, который вы слушаете, в разделе "Локальный адрес"

Посмотрите на имя процесса прямо под ним.

ПРИМЕЧАНИЕ. Чтобы найти процесс в диспетчере задач

Обратите внимание на PID (идентификатор процесса) рядом с портом, который вы просматриваете.

Откройте диспетчер задач Windows.

Выберите вкладку "Процессы".

Найдите PID, который вы отметили, когда выполняли netstat на шаге 1.

Если вы не видите столбец PID, нажмите «Просмотреть/выбрать столбцы». Выберите PID.

Уолтер Гленн

Уолтер Гленн
Бывший главный редактор

Уолтер Гленн – бывший главный редактор How-To Geek и связанных с ним сайтов. Он имеет более чем 30-летний опыт работы в компьютерной индустрии и более 20 лет в качестве технического писателя и редактора. Он написал сотни статей для How-To Geek и отредактировал тысячи. Он является автором или соавтором более 30 книг о компьютерах на более чем дюжине языков для таких издательств, как Microsoft Press, O'Reilly и Osborne/McGraw-Hill. Он также написал сотни технических документов, статей, руководств пользователя и курсов. Подробнее.

Всякий раз, когда приложение хочет сделать себя доступным по сети, оно требует порт TCP/IP, что означает, что этот порт не может использоваться ничем другим. Так как же проверить открытые порты, чтобы увидеть, какое приложение уже использует их?

IP-адрес указывает компьютер или другое сетевое устройство в сети. Когда одно устройство отправляет трафик на другое, IP-адрес используется для направления этого трафика в соответствующее место. Как только трафик достигает нужного места, устройство должно знать, в какое приложение или службу направлять трафик. Вот тут-то и появляются порты. Если IP-адрес сродни почтовому адресу в почтовом письме, порт — это что-то вроде имени человека в этом доме, который получает почту. По большей части вам не нужно беспокоиться о портах. Но время от времени вы можете столкнуться с приложением, настроенным на прослушивание трафика на том же порту, который уже используется другим приложением. В этом случае вам нужно указать приложение, в котором этот порт уже используется.

Существует несколько способов узнать, какое приложение имеет заблокированный порт, но мы познакомим вас с парой встроенных способов, использующих командную строку, а затем покажем отличное бесплатное приложение, которое делает это еще проще. Все эти методы должны работать независимо от того, какую версию Windows вы используете.

Используйте встроенные инструменты, чтобы увидеть, что прослушивает порт

У нас есть две команды, чтобы показать вам. В первом перечислены активные порты вместе с именем процесса, который их использует. В большинстве случаев эта команда будет работать нормально. Однако иногда имя процесса не поможет вам определить, к какому приложению или сервису на самом деле привязан порт. В таких случаях вам потребуется перечислить активные порты вместе с номерами их идентификаторов процессов, а затем просмотреть эти процессы в диспетчере задач.

Первый вариант: просмотр использования порта вместе с именами процессов

Во-первых, вам нужно открыть командную строку в режиме администратора. Нажмите «Пуск», а затем введите «команда» в поле поиска. Когда в результатах появится «Командная строка», щелкните ее правой кнопкой мыши и выберите «Запуск от имени администратора».

В командной строке введите следующий текст и нажмите Enter:

После того, как вы нажмете Enter, для полного отображения результатов может потребоваться минута или две, так что наберитесь терпения. Прокрутите список, чтобы найти порт (который указан после двоеточия справа от локального IP-адреса), и вы увидите имя процесса, указанное под этой строкой. Если вы хотите немного упростить задачу, помните, что вы также можете передать результаты команды в текстовый файл. Затем вы можете просто найти в текстовом файле номер порта, который вам нужен.

Здесь, например, видно, что порт 49902 занят процессом с именем picpick.exe. PicPick — это редактор изображений в нашей системе, поэтому мы можем предположить, что порт фактически связан процессом, который регулярно проверяет наличие обновлений для приложения.

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

Если имя процесса для номера порта, который вы ищете, затрудняет определение связанного приложения, вы можете попробовать версию команды, которая показывает идентификаторы процессов (PID), а не имена. Введите следующий текст в командной строке и нажмите Enter:

В крайнем правом столбце перечислены идентификаторы PID, поэтому просто найдите тот, который привязан к порту, который вы пытаетесь устранить.

Затем откройте Диспетчер задач, щелкнув правой кнопкой мыши любое свободное место на панели задач и выбрав «Диспетчер задач».

Если вы используете Windows 8 или 10, перейдите на вкладку "Подробности" в диспетчере задач. В более старых версиях Windows вы увидите эту информацию на вкладке «Процессы». Отсортируйте список процессов по столбцу «PID» и найдите PID, связанный с портом, который вы исследуете. Возможно, вы сможете узнать больше о том, к какому приложению или службе привязан порт, просмотрев столбец «Описание».

Если нет, щелкните процесс правой кнопкой мыши и выберите «Открыть расположение файла». Расположение файла, скорее всего, даст вам представление о том, какое приложение задействовано.

После того, как вы там, вы можете использовать параметры «Завершить процесс», «Открыть расположение файла» или «Перейти к службам», чтобы контролировать процесс или остановить его.

Используйте NirSoft CurrPorts для просмотра того, что прослушивает порт

Если вы не любитель командной строки или предпочитаете использовать простую утилиту, чтобы сделать все это за один шаг, мы рекомендуем отличную бесплатную утилиту CurrPorts от NirSoft. Идите вперед и загрузите инструмент. Просто убедитесь, что вы используете правильную версию (обычная версия предназначена для 32-разрядной версии Windows, а версия x64 — для 64-разрядной версии Windows). Это портативное приложение, поэтому вам не нужно его устанавливать. Просто разархивируйте папку загрузки и запустите исполняемый файл.

В окне CurrPorts выполните сортировку по столбцу «Локальный порт», найдите порт, который вы исследуете, и вы увидите все — имя процесса, PID, порт, полный путь к процессу и т. д.

Чтобы упростить задачу, дважды щелкните любой процесс, чтобы просмотреть все детали в одном окне.

Когда вы определили, к какому приложению или службе привязан исследуемый вами порт, вам решать, как с этим справиться. Если это приложение, у вас может быть возможность указать другой номер порта. Если это служба или у вас нет возможности указать другой номер порта, вам, скорее всего, придется остановить службу или удалить приложение.

  • › How-To Geek нанимает специалиста по Windows на полную ставку
  • › Как узнать, использует ли ваш ПК с Windows прокси-сервер
  • › 20 лучших обучающих тем 2010 года
  • ›5 шрифтов, которые следует прекратить использовать (и лучшие альтернативы)
  • › Почему не было Windows 9?
  • › Что означает XD и как вы его используете?
  • › Как установить Google Play Маркет в Windows 11
  • › Как восстановить метки панели задач в Windows 11

В частности, порт 22. Я установил freeSSHd на компьютер с Windows Server 2008, на котором работает только IIS. Когда я пытаюсь запустить службу SSH, мне сообщается, что порт уже используется. Как узнать, какая служба использует этот порт?

7 ответов 7

Sysinternals TCPView покажет вам используемые порты TCP/UDP и процессы, которые их используют.

+1 для Sysinternals. Я всегда использовал netstat -ab, и у меня это работало, но это определенно лучше.

netstat -b в командной строке также будет работать. Sysinternals TCPView — это в основном более красивая версия с графическим интерфейсом, netstat — это инструмент, который поставляется с Windows.

Согласен, хотя я считаю, что живое обновление/выделение в TCPView весьма полезно для отслеживания портов/процессов.

+1 за встроенное решение. «Использовать sysinternals» кажется ответом на каждый вопрос Windows, но полезно знать, как решать проблемы без стороннего программного обеспечения.

netstat в Windows 2008:

Запустите командную строку с "Запуск от имени администратора", затем введите netstat -anb .

Команда выполняется быстрее в числовой форме ( -n ), а параметр -b требует повышения прав.

Чтобы отфильтровать вывод и проверить только порты udp: используйте netstat -anb -p udp

netstat -an покажет все открытые в данный момент порты с их адресами в числовой форме.
Чтобы найти информацию об использовании определенного порта с помощью приглашения Power Shell от имени администратора: netstat -an | Строка выбора 10000 .

Поднимитесь на новый уровень с CurrPorts от NirSoft:

CurrPorts отображает список всех открытых в данный момент портов TCP/IP и UDP на вашем локальном компьютере. Для каждого порта в списке также отображается информация о процессе, открывшем порт, включая имя процесса, полный путь к процессу, информацию о версии процесса (название продукта, описание файла и т. процесс был создан, и пользователь, который его создал.

Не только это, но и:

Кроме того, CurrPorts позволяет закрывать нежелательные соединения TCP, убивать процессы, открывшие порты, и сохранять информацию о портах TCP/UDP в файл HTML, файл XML или текстовый файл с разделителями табуляции. CurrPorts также автоматически помечает розовым цветом подозрительные порты TCP/UDP, принадлежащие неопознанным приложениям (приложения без информации о версии и значков)

Читайте также: