Как узнать, какой процесс прослушивает порт в Windows? - PullRequest
1808 голосов
/ 07 сентября 2008

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

Ответы [ 28 ]

2048 голосов
/ 07 сентября 2008

PowerShell

Get-Process -Id (Get-NetTCPConnection -LocalPort portNumber).OwningProcess

CMD

 C:\> netstat -a -b

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

Примечание. Рекомендация датчанина для TCPView . Это выглядит очень полезно!

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

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

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

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

1868 голосов
/ 18 мая 2014

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

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

или Выполнить resmon.exe, или TaskManager вкладка производительности

enter image description here

204 голосов
/ 07 сентября 2008

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

155 голосов
/ 07 сентября 2008
netstat -aon | find /i "listening"
92 голосов
/ 24 января 2018

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

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

netstat -ano | findStr "8080"

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

tasklist /fi "pid eq 2216"

find process by TCP/IP port

72 голосов
/ 08 октября 2013

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

netstat -aon |find /i "listening" |find "port"

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

65 голосов
/ 08 ноября 2012
  1. Откройте окно командной строки (от имени администратора). В «Пуск \ Поле поиска» введите «cmd», затем щелкните правой кнопкой мыши «cmd.exe» и выберите «Запуск от имени администратора»

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

    netstat -abno

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

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

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

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

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

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

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

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

  2. Открыть диспетчер задач Windows.

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

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

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

    • Убедитесь, что выбран параметр «Показывать процессы всех пользователей».

48 голосов
/ 10 февраля 2016

Получить PID и имя изображения

Использовать только одну команду:

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 является 5 th элементом в этой строке) и передается следующему команда

    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
40 голосов
/ 23 августа 2014

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

тип
netstat -n -a -o

После выполнения этой команды в командной строке Windows (cmd) выберите PID, который я думаю, что последний столбец предположить, что это 3312

Теперь наберите

Taskkill / F / PID 3312

Теперь вы можете перепроверить, набрав команду netstat.

ПРИМЕЧАНИЕ: иногда windows не позволяет вам запускать эту команду непосредственно на CMD, поэтому сначала вам нужно выполнить эти шаги из запуска-> командная строка (щелкните правой кнопкой мыши на командной строке и запустите от имени администратора)

22 голосов
/ 17 апреля 2014

Чтобы получить список всех идентификаторов процессов-владельцев, связанных с каждым соединением:

netstat -ao |find /i "listening"

Если вы хотите уничтожить какой-либо процесс, используйте идентификатор и используйте эту команду, чтобы порт стал свободным

Taskkill /F /IM pidof a process
...