Как узнать, какой процесс прослушивает порт в Windows?
windows
networking
port
Readonly
источник
источник
Ответы:
Новый ответ, powershell
Старый ответ, cmd
(Добавьте -n, чтобы остановить попытки разрешения имен хостов, что сделает его намного быстрее.)
Обратите внимание на рекомендацию датчанина для TCPView . Это выглядит очень полезно!
-a Отображает все соединения и порты прослушивания.
-b Отображает исполняемый файл, участвующий в создании каждого соединения или порта прослушивания. В некоторых случаях известные исполняемые файлы содержат несколько независимых компонентов, и в этих случаях отображается последовательность компонентов, участвующих в создании соединения или порта прослушивания. В этом случае имя исполняемого файла находится в [] внизу, вверху - компонент, который он вызвал, и так далее, пока не будет достигнут TCP / IP. Обратите внимание, что этот параметр может занять много времени и завершится ошибкой, если у вас нет достаточных разрешений.
-n Отображает адреса и номера портов в числовой форме.
-o Отображает идентификатор процесса-владельца, связанный с каждым соединением.
источник
1234
- тогда вы можете использовать,tasklist /fi "pid eq 1234"
чтобы узнать название и другие детали процесса.Есть родной графический интерфейс для Windows:
Или запустить
resmon.exe
, или из вкладки производительности диспетчера задач .источник
Используйте TCPView, если вы хотите графический интерфейс для этого. Это старое приложение Sysinternals, которое Microsoft купила.
источник
Для Windows:
источник
netstat -aon | find /i "abhören"
для немецкого.FIND: Parameter format not correct
Ключ -b, упомянутый в большинстве ответов, требует наличия прав администратора на компьютере. Вам не нужны повышенные права, чтобы получить имя процесса!
Найдите pid процесса, запущенного по номеру порта (например, 8080)
Найти имя процесса по pid
источник
Вы можете получить больше информации, если выполните следующую команду:
Использование команды «Найти» позволяет фильтровать результаты.
find /i "listening"
будут отображаться только порты, которые «слушают». Обратите внимание, что вам нужно/i
игнорировать регистр, иначе вы наберете find "LISTENING".| find "port"
будет ограничивать результаты только теми, которые содержат конкретный номер порта. Обратите внимание, что при этом он также будет фильтровать результаты, которые имеют номер порта в любом месте строки ответа.источник
FIND: Parameter format not correct
. Вам нужно добавить пробел после критерия поиска. Это оставит вас сnetstat -aon | find /i "listening" | find "1234 "
.{back tick}
" listening{back tick}
"" | find "{back tick}
" port{back tick}
" «(<- обратите внимание на экранированные кавычки - извините за термин,back tick
поскольку я не могу добавить фактического персонажа, так как он считает, что это отрывок)Откройте окно командной строки (от имени администратора). В поле «Пуск \ Поиск» введите «cmd», затем щелкните правой кнопкой мыши «cmd.exe» и выберите «Запуск от имени администратора».
Введите следующий текст и нажмите Enter.
netstat -abno
-a Отображает все соединения и порты прослушивания.
-b Отображает исполняемый файл, участвующий в создании каждого соединения или порта прослушивания. В некоторых случаях известные исполняемые файлы содержат несколько независимых компонентов, и в этих случаях отображается последовательность компонентов, участвующих в создании соединения или порта прослушивания. В этом случае имя исполняемого файла находится в [] внизу, вверху - компонент, который он вызвал, и так далее, пока не будет достигнут TCP / IP. Обратите внимание, что этот параметр может занять много времени и завершится ошибкой, если у вас нет достаточных разрешений.
-n Отображает адреса и номера портов в числовой форме.
-o Отображает идентификатор процесса-владельца, связанный с каждым соединением.
Найдите порт, который вы слушаете, в разделе «Локальный адрес».
Посмотрите на имя процесса прямо под этим.
ПРИМЕЧАНИЕ. Чтобы найти процесс в диспетчере задач
Обратите внимание на PID (идентификатор процесса) рядом с портом, который вы просматриваете.
Откройте диспетчер задач Windows.
Выберите вкладку «Процессы».
Найдите PID, который вы указали, когда выполняли netstat на шаге 1.
Если вы не видите столбец PID, нажмите View / Select Columns. Выберите PID.
Убедитесь, что выбран параметр «Показывать процессы от всех пользователей».
источник
Получить PID и имя изображения
Используйте только одну команду:
где
9000
следует заменить номер вашего порта.Выход будет содержать что - то вроде этого:
Объяснение:
он перебирает каждую строку из вывода следующей команды:
из каждой строки
%a
извлекается PID ( имя здесь не важно) (PID является элементом5
th в этой строке) и передается следующей командеЕсли вы хотите , чтобы пропустить на заголовок и возвращение командной строки , вы можете использовать:
Вывод:
источник
findstr :9000
если нет, вы даже найдете приложения, содержащие номер (например, при поиске «80» вы найдете приложения и на портах 80, 800, 8000).Сначала мы находим идентификатор процесса той конкретной задачи, которую нам нужно устранить, чтобы освободить порт:
Тип
После выполнения этой команды в командной строке Windows (cmd) выберите pid, который я считаю последним столбцом. Предположим, это 3312.
Сейчас типа
Теперь вы можете перепроверить, набрав
netstat
команду.ПРИМЕЧАНИЕ: иногда Windows не позволяет вам запускать эту команду непосредственно на CMD, поэтому сначала вам нужно выполнить следующие шаги:
Из меню «Пуск» -> командная строка (щелкните правой кнопкой мыши на командной строке и запустите от имени администратора)
источник
Чтобы получить список всех идентификаторов процессов-владельцев, связанных с каждым соединением:
Если вы хотите убить какой-либо процесс, имейте ID и используйте эту команду, чтобы порт стал свободным
источник
Получить номер порта из PID в Windows очень просто.
Ниже приведены шаги:
Перейти к запуску → введите CMD → нажмите Enter.
Напишите следующую команду ...
(Примечание: не используйте квадратные скобки.)
Нажмите Enter...
Затем cmd сообщит вам подробности службы, работающей на этом порту, вместе с PID.
Откройте диспетчер задач, перейдите на вкладку службы и сопоставьте PID с идентификатором cmd, и все.
источник
Просто откройте командную оболочку и введите (скажем, ваш порт 123456):
Вы увидите все, что вам нужно.
Заголовки:
Это как упомянуто здесь .
источник
findstr 123456
(без кавычек), либоfind "123456"
(с кавычками). (@Josh)Чтобы узнать, какой конкретный процесс (PID) использует какой порт:
Где 1234 - PID вашего процесса. [Перейдите в Диспетчер задач → Служба / вкладка Процессы, чтобы узнать PID вашего приложения.]
источник
-n
флаг дважды.-ano
достаточно.В PowerShell 5 в Windows 10 или Windows Server 2016 запустите
Get-NetTCPConnection
командлет. Я думаю, что это также должно работать на старых версиях Windows.Вывод по умолчанию
Get-NetTCPConnection
не включает идентификатор процесса по некоторым причинам, и это немного сбивает с толку. Однако вы всегда можете получить его, отформатировав вывод. Собственность, которую вы ищете, естьOwningProcess
.Если вы хотите узнать идентификатор процесса, который прослушивает порт 443, выполните эту команду:
Отформатируйте вывод в таблицу со свойствами, которые вы ищете:
Если вы хотите узнать имя процесса, выполните эту команду:
источник
Если вы хотите использовать инструмент GUI, для этого есть TCPView Sysinternals .
источник
Введите в команду:
netstat -aon | findstr :DESIRED_PORT_NUMBER
Например, если я хочу найти порт 80:
netstat -aon | findstr :80
Этот ответ был первоначально отправлен на этот вопрос .
источник
Netstat:
-в владении процессом
Инструмент Currports помогает искать и фильтровать
источник
Откройте командную строку - старт → Run →
cmd
или меню Пуск → Все программы → Принадлежности → Command Prompt .Тип
Замените
[port_number]
фактическим номером порта, который вы хотите проверить, и нажмите Enter.Тип
Замените на
[PID]
число из вышеприведенного шага и нажмите Enter.источник
netstat -ao
иnetstat -ab
сообщит вам приложение, но если вы не являетесь системным администратором, вы получите «Запрошенная операция требует повышения прав».Это не идеально, но если вы используете Process Explorer от Sysinternals, вы можете перейти к свойствам определенных процессов и посмотреть на вкладку TCP, чтобы увидеть, используют ли они интересующий вас порт. Это что-то вроде иголки и стога сена. вещь, но, может быть, это поможет кому-то ...
источник
Я рекомендую CurrPorts от NirSoft.
CurrPorts может фильтровать отображаемые результаты. TCPView не имеет этой функции.
Примечание. Вы можете щелкнуть правой кнопкой мыши соединение сокета процесса и выбрать «Закрыть выбранные соединения TCP» (вы также можете сделать это в TCPView). Это часто устраняет проблемы с подключением к Outlook и Lync после переключения VPN. С помощью CurrPorts вы также можете закрывать соединения из командной строки с помощью параметра «/ close».
источник
Единственное решение, которое мне помогает, это одно. Просто замените 3000 своим портом:
Изменить: Изменены
kill
кStop-Process
для более PowerShell-подобного языкаисточник
Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess | Stop-Process
Используйте следующие инструменты: Из cmd :
C:\> netstat -anob
с правами администратора .Process Explorer
Дамп процесса
Порт Монитор
Все из sysinternals.com.
Если вы просто хотите узнать, какой процесс запущен и какие потоки находятся под каждым процессом, я рекомендую вам узнать об этом
wmic
. Это замечательный инструмент командной строки, который дает вам гораздо больше, чем вы можете себе представить.Пример:
Приведенная выше команда будет отображать список всех процессов в течение коротких 5 секунд. Чтобы узнать больше, вы можете просто пойти с
/?
командой Windows, например,И так далее. :)
источник
Использование:
Это показывает PID процесса, запущенного на определенном порту.
Имейте в виду идентификатор процесса и перейдите к диспетчеру задач и вкладке служб или сведений и завершите процесс с тем же идентификатором PID.
Таким образом, вы можете убить процесс, запущенный на определенном порту в Windows.
источник
Для тех, кто использует PowerShell, попробуйте
Get-NetworkStatistics
:источник
Программно вам нужен материал из iphlpapi.h , например GetTcpTable2 (). Структуры, подобные MIB_TCP6ROW2, содержат PID владельца.
источник
Используя PowerShell ... ... это будет ваш друг (замените 8080 на номер вашего порта):
Образец вывода
Таким образом, в этом примере tnslsnr.exe (база данных OracleXE) прослушивает порт 8080.
Быстрое объяснение
Select-String
используется для фильтрации длинного выводаnetstat
для соответствующих строк.-Pattern
проверяет каждую строку на соответствие регулярному выражению-Context 0,1
будет выводить 0 ведущих строк и 1 завершающую строку для каждого совпадения паттерна.источник
Для Windows, если вы хотите найти материал, прослушивающий или подключенный к порту 1234, выполните следующую команду в командной строке:
источник
Используйте приведенный ниже пакетный скрипт, который принимает имя процесса в качестве аргумента и выдает
netstat
результат для процесса.источник
Основываясь на ответах с информацией и убийством , для меня полезно объединить их в одну команду . И вы можете запустить это из cmd, чтобы получить информацию о процессе, который прослушивает данный порт (пример 8080):
Или, если вы хотите убить его:
Вы также можете поместить эти команды в файл летучей мыши (они будут немного отличаться - заменить
%i
на%%i
):файл
portInfo.bat
файл
portKill.bat
Тогда вы из cmd можете сделать это:
portInfo.bat 8080
или
portKill.bat 8080
источник
.\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. Я также пробовал это в обычной командной строке, но результат был тот же: вывод содержимого скрипта. Я уверен, что мне не хватает важной информации, чтобы сделать эту работу./nh
:@tasklist /nh /fi "pid eq %i"
? И именно дверь:Findstr ":8080"
В моем случае порт (3000) вообще не использовался и не виден в netstat. Но! Деинсталлятор Docker для Windows решил проблему.
источник