Порт занят что делать. Процессы и порты Windows

  • Дата: 26.09.2021

Как определить каким процессом (программой) занят порт?

Информация.
При установке некоторых программ иногда возникает проблема с доступностью порта. Т.е. вы устанавливаете программу, а она вам говорит: «Извините, но предпочитаемый порт номер <такой то> занят!». И самое интересное программа не говорит чем или кем занят порт. Обычно это бывают вирусняки.

Как определить каким процессом (программой) занят порт.
1. В меню «Пуск » выберите пункт «Выполнить «;
2. В поле «Открыть » наберите команду cmd и нажмите кнопку «ОК»;

Откроется окно командной строки, примерно такого вида:

3. Наберите команду netstat -a -n -o и нажмите кнопку "Ввод" (Enter) на клавиатуре; Результатом выполнения данной команды, должен быть список всех активных подключений, с ip-адресами и номерами портов.

или вот так 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 компьютер
Указывает имя или 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 Текст кода или выхода программы

Всем удачной работы!!!

Иногда возникает такая необходимость узнать какой порт какая программа заняла. Например, это может пригодиться в том случае, если при использовании денвера, 80-й порт на котором по умолчанию он и работает, может занять другая программа и вот как раз в этом случае и нужно узнать кто же занял этот "драгоценный" порт. Узнать это можно как с помощью командной строки, так и при помощи сторонней программы про которую я и напишу в статье. Мне с ней удобнее работать, так же программа заменяет стандартный менеджер процессов и у нее есть очень много удобных в работе функций, поэтому она и заслуживает внимания в данной статье.

Итак, приступим. Сначала опишу способ как узнать какой порт занимает программа, при помощи командной строки.

  • Запускать командную строку необходимо от имени администратора.
  • После того как она будет запущена, введите команду: netstat -ab
  • Командная строка начнет выводить список программ и порты которые они занимают.

Просмотрев список можно увидеть:

Видно, что 80-й порт заняла программа Skype.

Определяется это довольно просто. Рассмотрим все по порядку:

TCP 0.0.0.0:80 Vladimir:0 LISTENING

TCP - указывает на то что используется протокол TCP (может быть использован и UDP)

0.0.0.0:80 - локальный адрес программы, где 0.0.0.0 - это IP-адрес, а 80 порт

LISTENING - означает что порт прослушивается

- процесс который прослушивает этот самый порт.

Так же и с остальными процессами, например процесс wmware-hostd.exe прослушивает 443 порт. Ну думаю дальше все понятно. Таким вот способом можно легко узнать какой процесс на каком порте сидит и если это необходимо, то можно закрыть его для освобождения порта например 80 или 443 .

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

А теперь перейдем к одной очень хорошей программе о которой я говорил в самом начале. Называется она Process Hacker . Аналогичен диспетчеру задач, но более функциональный.

К примеру Process Hacker имеет в своем арсенале 17 способов завершения процесса, убить может все что угодно:-) В отличие от менеджера задач Windows, Process Hacker показывает гораздо больше информации: процесс, путь к процессу, количество занимаемой памяти озу, нагрузка на процессор, идентификатор процесса и многое другое. Вывод всех данных так же можно настроить, убрать к примеру показ нагрузки на процессор или наоборот добавить. Функций очень много. Еще одной маленькой плюшкой является то что свернув Process Hacker в трей, будет виден график загруженности процессора и оперативной памяти. Я лично считаю что это удобно. Закончу пожалуй хвалить эту программу и перейду к основной теме про порты.

Как же узнать какой порт заняла та или иная программа с помощью Process Hacker?

Тут все просто, проще чем с использованием командной строки.

  1. Открываете Process Hacker
  2. Переходите на вкладку Network

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

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

Ну вот и все, получилась чуть ли не статья, а отзыв о программе Process Hacker:-). Но программа действительно хороша.

Когда приложению требуется доступ к сети, оно использует порт TCP/IP. Занятый порт, естественно, недоступен для других программ. Как же узнать, какой процесс занимает порт, если его необходимо освободить для других целей?

Существуют разные способы решения этой задачи. Мы расскажем о двух: с помощью командной строки и Диспетчера задач (Task Manager) либо с использованием прекрасного бесплатного приложения с полным набором нужных функций.

Способ 1: командная строка и Диспетчер задач

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

Откройте командную строку (желательно от имени администратора, чтобы увидеть все процессы) и введите следующую команду:

Netstat -aon | more

Справа показаны PID – идентификаторы процессов (на скриншоте ниже они выделены белым). Найдите нужный вам порт и посмотрите, с каким идентификатором он связан. Например, на нашем скриншоте адрес 0.0.0.0:80, т. е. порт 80, связан с процессом 4708.

Теперь просто откройте Диспетчер задач и найдите в списке нужный ИД процесса. Возможно, для этого придется использовать опцию «Отображать процессы всех пользователей» (Show Processes for All Users). Определив нужный процесс, можно его завершить (End Process), открыть расположение файла (Open File Location) или перейти к службам (Go to Service(s)).

Способ 2: утилита CurrPorts

Если вы не любитель командной строки и предпочли бы выяснить всю нужную информацию с помощью одной программы, рекомендуем прекрасную бесплатную утилиту CurrPorts от NirSoft – одного из наших любимых разработчиков свободного ПО.

Просто запустите программу – и увидите все необходимые данные: процессы с полными адресами соответствующих файлов, занятые ими локальные и удаленные порты.

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

С помощью CurrPorts также можно завершить процесс, не заглядывая ради этого в Диспетчер задач.