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

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

Ответ 1

PowerShell

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

CMD

 C:\> netstat -a -b

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

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

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

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

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

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

Ответ 2

Есть собственный GUI для Windows:

  • Начало → Все программы → Аксессуары → Системные инструменты → Монитор ресурсов

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

enter image description here

Ответ 3

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

Ответ 4

Для Windows:

netstat -aon | find /i "listening"

Ответ 5

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

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

netstat -ano | findStr "8080"

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

tasklist /fi "pid eq 2216"

find process by TCP/IP port

Ответ 6

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

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

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

Ответ 7

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

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

    netstat -abno

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

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

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

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

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

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

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

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

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

  • Перейдите на вкладку Процессы.

  • Посмотрите на PID, который вы отметили, когда вы сделали netstat на шаге 1.

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

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

Ответ 8

Получить 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

Ответ 9

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

тип
netstat -n -a -o

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

Теперь введите

taskkill/F/PID 3312

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

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

Ответ 10

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

netstat -ao |find /i "listening"

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

Taskkill /F /IM PID of a process

Ответ 11

Очень просто получить номер порта из pid в окнах.

Ниже приведены шаги:

1) Перейдите в run → type cmd → нажмите enter.

2) напишите следующую команду...

netstat -aon | findstr [port number]

(Примечание. Не включайте квадратные скобки.)

3) нажмите enter...

4) Затем cmd предоставит вам подробную информацию об обслуживании, выполняющемся на этом порту вместе с pid.

5) Откройте диспетчер задач и перейдите на вкладку сервиса и сопоставьте pid с идентификатором cmd и его.

Ответ 12

Просто откройте командную оболочку и введите: (если ваш порт равен 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

это как указано здесь

Ответ 13

Если вы хотите использовать инструмент GUI для этого, SysInternals TCPView.

Ответ 14

С помощью 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
    

Ответ 15

Чтобы узнать, какой конкретный процесс (PID) использует какой порт:

netstat -anon | findstr 1234

Где 1234 - PID вашего процесса. [Перейдите в диспетчер задач → вкладка "Службы/процессы", чтобы узнать PID вашего приложения]

Ответ 16

Введите команду: netstat -aon | findstr :DESIRED_PORT_NUMBER

Например, если я хочу найти порт 80: netstat -aon | findstr :80

Этот ответ был первоначально отправлен в этот поток.

Ответ 17

Netstat

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

    netstat -b ano | findstr "7002"

    netstat -a нет> ano.txt

Инструмент Currports помогает искать и фильтровать

Ответ 18

netstat -ao и netstat -ab скажите вам приложение, но если вы не админ, вы получите "Запрошенная операция требует повышения".

Это не идеально, но если вы используете sysinternals Process Explorer, вы можете перейти к свойствам конкретных процессов и посмотреть вкладку TCP, чтобы узнать, используете ли они порт, который вам интересен. Бит игла и стога сена, но, возможно, это поможет кому-то...

Ответ 19

Я рекомендую CurrPorts из NirSoft.

CurrPorts может фильтровать отображаемые результаты. TCPView не имеет этой функции.

Примечание. Вы можете щелкнуть правой кнопкой мыши соединение сокетов процесса и выбрать "Закрыть выбранные TCP-соединения" (это также можно сделать в TCPView). Это часто устраняет проблемы с подключением, которые возникают с Outlook и Lync после переключения VPN. С помощью CurrPorts вы также можете закрыть соединения из командной строки с параметром "/close".

Ответ 20

Следуйте этим инструментам: - от cmd: - C:\> netstat -anob с привилегией Администратор.

http://technet.microsoft.com/en-us/sysinternals/bb896653 - Process Explorer

http://technet.microsoft.com/en-us/sysinternals/bb896645 - Дамп процесса

http://technet.microsoft.com/en-us/sysinternals/bb896644 - Монитор порта

Все от sysinternals.com

Если вы просто хотите узнать, как работает процесс и потоки в каждом процессе, я рекомендую узнать о wmic. Замечательный инструмент командной строки cmd, который дает вам гораздо больше, чем вы можете знать.

Экзамен: -

c:\> wmic process list brief /every:5

Команда Above будет отображать весь список процессов каждые 5 секунд. Чтобы узнать больше, вы можете просто пойти с командой /? для окон, например,

c:\>wmic /?
c:\>wmic process /?
c:\>wmic prcess list /?

и т.д. и т.д.:)

Ответ 21

netstat -a -o Это показывает PID процесса, выполняющегося на определенном порту.

Имейте в виду идентификатор процесса и перейдите на вкладку "Диспетчер задач" и "Сервисы" или "Сведения" и завершите процесс, который имеет тот же PID.

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

Ответ 22

Для тех, кто использует Powershell, попробуйте Get-NetworkStatistics:

> Get-NetworkStatistics | where Localport -eq 8000


ComputerName  : DESKTOP-JL59SC6
Protocol      : TCP
LocalAddress  : 0.0.0.0
LocalPort     : 8000
RemoteAddress : 0.0.0.0
RemotePort    : 0
State         : LISTENING
ProcessName   : node
PID           : 11552

Ответ 23

  1. Откройте command prompt - start " run " cmd or start " All Programs " Accessories " Command Prompt.

  2. Тип

    netstat -aon | findstr '[port_number]'

Замените [номер_порта] фактическим номером порта, который вы хотите проверить, и нажмите Enter.

  1. Если порт используется каким-либо приложением, то подробности этого приложения будут показаны. Номер, который показан в последнем столбце списка, представляет собой PID (идентификатор процесса) этого приложения. Запишите это.
  2. Тип

    tasklist | findstr '[PID]'

Замените [PID] числом из вышеприведенного шага и нажмите ввод.

  1. Вам будет показано имя приложения, которое использует номер вашего порта.

Ответ 24

Использование 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 трейлинг-линию для каждого совпадения шаблонов.

Ответ 25

Программно вам нужны материалы из iphlpapi.h, например GetTcpTable2(). Структуры, подобные MIB_TCP6ROW2, содержат PID владельца.

Ответ 26

Это единственное решение, которое мне помогает, просто замените 3000 своим портом

$P = Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess; kill $P.Id

Ответ 27

Для Windows, если вы хотите найти материал, прослушивающий или подключенный к порту 1234, выполните следующую команду в командной строке:

netstat -na | find "1234"

Ответ 28

Используйте ниже пакетный скрипт, который принимает имя процесса в качестве аргумента и выдает вывод 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

Ответ 29

Если смена порта не работает:

Шаг 1. Перейдите в сервисы, выполнив поиск "служб" в Windows.

Шаг 2: Закажите все услуги в алфавитном порядке (не обязательно)

Шаг 3: Остановить любые службы, связанные с MYSQL.

Шаг 4: Запустите mysql из xampp.

Ответ 30

Основываясь на этих ответах: info и kill. Для меня полезно объединить их в одной командой. И вы можете запустить это из cmd, чтобы получить информацию о процессе, который прослушивает данный порт (пример 8080):

for /f "tokens=3 delims=LISTENING" %i  in ('netstat -ano ^| findStr "8080" ^| findStr "["') do tasklist /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.bat

for /f "tokens=3 delims=LISTENING" %%i  in (
    'netstat -ano ^| findStr "%1" ^| findStr "["'
) do (
    tasklist /fi "pid eq %%i"
)

portKill.bat

for /f "tokens=3 delims=LISTENING" %%i  in (
    'netstat -ano ^| findStr "%1" ^| findStr "["'
) do (
    Taskkill /F /IM %%i
)

Тогда вы из cmd можете сделать это: portInfo.bat 8080 или же portKill.bat 8080