Какая программа слушает определенный порт в Windows?
26.10.2022
itpro
Windows 10, Windows Server 2019
комментария 2
При запуске новых сервисов в Windows, вы можете обнаружить что нужный порт уже занят (слушается) другой программой (процессом). Разберемся, как определить какая программ прослушивает определенный TCP или UDP порт в Windows.
Например, вы не можете запустить сайт IIS на стандартном 80 порту в Windows, т.к. этот порт сейчас занят (при запуске нескольких сайтов в IIS вы можете запускать их на одном или на разных портах). Как найти службу или процесс, который занял этот порт и завершить его?
Чтобы вывести полный список TCP и UDP портов, которые прослушиваются вашим компьютером, выполните команду:
netstat -aon| find «LIST»
Или вы можете сразу указать искомый номер порта:
netstat -aon | findstr «:80» | findstr «LISTENING»
- a – показывать сетевые подключения и открытые порты
- o – выводить идентфикатор професса (PID) для каждого подключения
- n – показывать адреса и номера портов в числовом форматер
По выводу данной команды вы можете определить, что 80 порт TCP прослушивается (статус LISTENING ) процессом с PID 16124.

Вы можете определить исполняемый exe файл процесса с этим PID с помощью Task Manager или с помощью команды:
tasklist /FI «PID eq 16124»

Можно заменить все указанные выше команды одной:
for /f «tokens=5» %a in (‘netstat -aon ^| findstr :80’) do tasklist /FI «PID eq %a»
С помощью однострочной PowerShell команды можно сразу получить имя процесса, который прослушивает:
- TCP порт: Get-Process -Id (Get-NetTCPConnection -LocalPort 80).OwningProcess
- UDP порт: Get-Process -Id (Get-NetUDPEndpoint -LocalPort 53).OwningProcess

Можно сразу завершить этот процесс, отправив результаты через pipe в командлет Stop-Process:
Get-Process -Id (Get-NetTCPConnection -LocalPort 80).OwningProcess| Stop-Process
Проверьте, что порт 80 теперь свободен:

Чтобы быстрой найти путь к исполняемому файлу процесса в Windows, используйте команды:
Проверка занят ли порт на Linux или Unix
Как определить используется порт на Linux или Unix-подобной системах.Как я могу проверить, какие порты прослушиваются на сервере Linux?
Важно, знать, какие порты находятся в официальном списке сетевых интерфейсов сервера. Вам нужно обратить внимание, при открытии портов из-за возможных попыток взлома. Помимо вторжения, для устранения неполадок, может потребоваться, проверить, порт уже используется другим приложением на ваших серверах. Например, вы можете установить сервер Apache и Nginx на той же системе. Поэтому необходимо знать, если Apache или Nginx использует TCP порт # 80/443. Это краткое руководство содержит шаги, как использовать NetStat, Nmap и LSOF команды, чтобы проверить порты в использовании и просмотреть приложение, которое использует порт.
Как посмотреть какие порты заняты
Требования.
Статья применима для Windows 2000/XP/Vista/7.
Информация.
При установке некоторых программ иногда возникает проблема с доступностью порта. Т.е. вы устанавливаете программу, а она вам говорит: "Извините, но предпочитаемый порт номер <такой то> занят!". И самое интересное программа не говорит чем или кем занят порт.
Как определить каким процессом (программой) занят порт.
1. В меню "Пуск" выберите пункт "Выполнить";
2. В поле "Открыть" наберите команду cmd и нажмите кнопку "ОК";
Откроется окно командной строки, примерно такого вида:
3. Наберите команду netstat -ano и нажмите кнопку "Ввод" (Enter) на клавиатуре;
Результатом выполнения данной команды, должен быть список всех активных подключений, с ip-адресами и номерами портов.
4. Теперь в колонке "Локальный адрес", находим нужный нам порт и записываем его идентификатор в колонке "PID";
Например порт номер 80, его идентификатор 440.
5. Снова открываем меню "Пучк" и выбираем пункт "Выполнить";
6. В поле "Открыть" вводим команду taskmgr и нажимаем кнопку "ОК";
7. В окне "Диспетчер задач Windows" переходим на вкладку "Процессы";
8. В главном меню открываем пункт "Вид" и выбираем пункт "Выбрать столбцы. ";
9. В окне "Выбор столбцов" находим пункт "Идентиф. процесса (PID)" и ставим рядом с ним галочку;
10. Нажимаем кнопку "ОК";
11. Теперь в окне "Диспетчер задач Windows", нажимаем на заголовок столбца "PID", для сортировки процессов по возрастанию;
12. Находим номер нашего процесса 440 и в столбце "Имя образа", смотрим какой процесс занимает наш порт;
Blog of Khlebalin Dmitriy
Информация.
При установке некоторых программ иногда возникает проблема с доступностью порта. Т.е. вы устанавливаете программу, а она вам говорит: «Извините, но предпочитаемый порт номер <такой то> занят!». И самое интересное программа не говорит чем или кем занят порт. Обычно это бывают вирусняки.
Как определить каким процессом (программой) занят порт.
1. В меню «Пуск» выберите пункт «Выполнить«;
2. В поле «Открыть» наберите команду cmd и нажмите кнопку «ОК»;
Откроется окно командной строки, примерно такого вида:

или вот так Netstat -a -n -o –b

4. Теперь в колонке «Локальный адрес», находим нужный нам порт и записываем его идентификатор в колонке»PID»;
Например порт номер 80, его идентификатор 440.
5. Снова открываем меню «Пучк» и выбираем пункт «Выполнить«;
6. В поле «Открыть» вводим команду taskmgr и нажимаем кнопку «ОК»;
7. В окне «Диспетчер задач Windows» переходим на вкладку «Процессы«;
8. В главном меню открываем пункт «Вид» и выбираем пункт «Выбрать столбцы…«;
9. В окне «Выбор столбцов» находим пункт «Идентиф. процесса (PID)» и ставим рядом с ним галочку;
10. Нажимаем кнопку «ОК»;
11. Теперь в окне «Диспетчер задач Windows«, нажимаем на заголовок столбца «PID», для сортировки процессов по возрастанию;
12. Находим номер нашего процесса 440 и в столбце «Имя образа«, смотрим какой процесс занимает наш порт;
В нашем случаи это Apache.exe

Далее если процесс подозрителен, можем его благополучно «пристрелить» через диспетчер задач (обладая правами администратора) или через консоль (опять же, обладая правами администратора) командой Taskkill. Синтаксис ниже:
taskkill [/s компьютер] [/u домен\пользователь [/p пароль]]] [/fi имя_фильтра] [/pid код_процесса]|[/im имя_образа] [/f][/t]
Параметры
/s компьютер
Указывает имя или IP-адрес удаленного компьютера (не используйте обратную косую черту). По умолчанию используется локальный компьютер.
/u домен\пользователь
Выполнение команды с разрешениями учетной записи пользователя, который указан как пользователь или домен\пользователь. По умолчанию используются разрешения текущего вошедшего пользователя компьютера, с которого поступила эта команда.
/p пароль
Определяет пароль учетной записи пользователя, заданной параметром /u.
/fi имя_фильтра
Задает типы процессов, которые следует завершить и не следует. Допустимыми именами фильтров, операторами и значениями являются следующие. Имя Операторы Значение
Hostname eq, ne Любая допустимая строка
Status eq, ne RUNNING|NOT RESPONDING
Imagename eq, ne Любая допустимая строка
PID eg, ne, gt, lt, ge, le Любой положительное число
Session eg, ne, gt, lt, ge, le Любой действительный номер сеанса
CPUTime eg, ne, gt, lt, ge, le Допустимое время в формате чч:мм:сс. Компоненты мм и сс должны иметь значения от 0 до 59, а чч может быть любым значением числа без знака
Memusage eg, ne, gt, lt, ge, le Любое целое число
Username eq, ne Любое действительное имя пользователя ([домен\]пользователь).
Services eq, ne Любая допустимая строка
Windowtitle eq, ne Любая допустимая строка
/pid код_процесса
Указывает код процесса, который необходимо завершить.
/im имя_образа
Указывает имя образа процесса, который необходимо завершить. Используйте подстановочный знак (*) для указания всех имен образа.
/f
Указывает, что процесс(ы) должен быть принудительно завершен. Этот параметр не действует для удаленных процессов, все удаленные процессы завершаются принудительно.
/t
Задает завершение всех дочерних процессов вместе с родительским, такое действие обычно известно как уничтожение дерева.
/?
Отображает справку в командной строке.
Примечания
Подстановочный символ (*) принимается только при указании вместе с фильтрами.
Завершение удаленных процессов всегда выполняется принудительно независимо от указания параметра /f.
Указание имени компьютера в качестве фильтра HOSTNAME приведет к завершению работы и остановке всех процессов.
Используйте команду tasklist для определения кода завершаемого процесса.
Команда taskkill является заменой средству Kill.
Примеры
Далее приведены примеры использования команды taskkill:
taskkill /pid 1230 /pid 1241 /pid 1253
taskkill /f /fi «USERNAME eq NT AUTHORITY\SYSTEM» /im notepad.exe
taskkill /s srvmain /f /im notepad.exe
taskkill /s srvmain /u maindom\hiropln /p p@ssW23 /fi «IMAGENAME eq note*» /im *
taskkill /s srvmain /u maindom\hiropln /fi «USERNAME ne NT*» /im *
taskkill /f /fi «PID ge 1000» /im *
Форматирование
Формат Значение
Курсив Данные, которые должен ввести пользователь
Полужирный шрифт Элементы, которые следует вводить точно, как показано
Пропуск (…) Параметры могут повторяться несколько раз в командной строке
В квадратных скобках ([]) Необязательные элементы
В фигурных скобках (<>); варианты разделены вертикальной чертой (|). Пример: <четные|нечетные>Набор значений, из которого можно выбрать только одно значение
Шрифт Courier Текст кода или выхода программы