Блог/Выявление активного порта на Windows

Выявление активного порта на Windows при настройки xDebug

Автор: Кудашев Сергей

Не так давно столкнулся с простой проблемой, моя любимая система IDE Eclipse с включенным xDebug, отказалась работать ссылаясь на то, что порт 9000 уже кем-то занят. Я решил быстро узнать, кто же его уже занял, и казалось бы, что проще может быть проще, чем посмотреть netstat и перенаправить его в grep. Но нет, мы же на Windows компьютере.

В общем, в связи с тем, что данная проблема у меня возникла не в первый раз решил быстренько про это написать. Итак, чтобы определить кто-же занял 9000 порт, обычно на любой unix машине мы используем:

netstat –nalp | grep 9000 

и вот они, все как на ладони, вместе с PID и названием программы. Однако на Windows машине это вызвало у меня некоторую сложность. Во-первых, нет родного grep (его можно поставить отдельным пакетом), вместо него я пользуюсь конструкцией Select-String в PowerShell. А во-вторых, netstat в Windows выводит информацию несколько по иному, показывая название программы под выводом информации об использованных сетевых подключениях.

Вывод netstat без нужных данных

Конечно, можно взять PID и потом посмотреть через tasklist, кто именно использует порт. Но зачем когда можно сделать в одну команду:

netstat -abonq | Select-String 9000 -Context 0,1

Что будет аналогично команде на unix/linux:

netstat –nalp | grep 9000 –B 0 –A 1

В итоге мы получим вот такой вывод от выполнения команды в PowerShell:

Вывод netstat с нужными данными

То есть выведем подходящие результаты показав 0 строк до строчки с результатом и 1 строку после строчки с результатом. Вооружившись этими знаниями управлять Windows машиной и открытыми портами становится гораздо легче.

Комментарии (0)