Как освободить порт 8080 mac os

Как закрыть открытый порт из терминала на Mac?

Я открыл порт № 5955 из класса Java для общения с клиентом. Как закрыть этот порт после завершения? а также какая команда может показать мне, если порт открыт или закрыт?

Узнайте идентификатор процесса (PID), который занимает номер порта (например, 5955), который вы хотели бы освободить

Убейте процесс, который в данный момент использует порт, используя его PID

Чтобы найти процесс, попробуйте:

Убейте процесс, который в данный момент использует порт, используя его PID

а затем проверьте, закрыт ли порт. Если нет, попробуйте:

Я сделал бы только следующее, если предыдущий не работал

Просто чтобы быть в безопасности. Опять же, в зависимости от того, как вы открыли порт, это может не иметь значения.

Однако, открыв порт, вы закрываете его таким же образом. Например, если вы создали сокет, привязали его к порту 0.0.0.0:5955 и вызвали listen, закройте тот же сокет.

Вы также можете просто убить процесс, у которого открыт порт.

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

Если вы хотите узнать, открыт ли порт, вы можете выполнить ту же команду lsof (если у какого-либо процесса он открыт, он открыт; в противном случае это не так), или вы можете просто попытаться подключиться к нему, например:

Если он возвращается немедленно без вывода, порт не открыт.

Возможно, стоит упомянуть, что, технически говоря, это не открытый порт, а комбинация хост: порт. Например, если вы подключены к локальной сети как 10.0.1.2, вы можете привязать сокет к 127.0.0.1:5955 или 10.0.1.2:5955, без влияния одного из них на другой, или вы можете привязать к 0.0.0.0 : 5955 для обработки обоих одновременно. С помощью команды вы можете увидеть все адреса IPv4 и IPv6 вашего компьютера ifconfig .

Источник

Как я могу открыть порт 8080 Mac OS X Lion?

Как я могу открыть доступ к порту 8080 из внешнего мира (частной сети) на моем Mac OS X Lion? Я хотел бы получить доступ к веб-странице, которая работает на моем стеке ламп на моем Mac (Zend Server CE) из локальной сети. Я могу получить доступ к порту 80 просто отлично. Порт 8080 заблокирован с другой стороны. Я также отключил брандмауэр.

Когда вы говорите, что отключили брандмауэр, вы имеете в виду тот, который указан в:, System Preferences > Security > Firewall или ipfw IP-брандмауэр, к которому вы можете получить доступ из командной строки? Или, возможно, оба?

Чтобы проверить, есть ли у вас ipfw правила, вы всегда можете зайти в терминал и ввести:

Вы также можете использовать, nmap чтобы проверить, открыт ли порт из разных мест вашей внутренней сети. Конечно, OS X не поставляется с nmap по умолчанию, поэтому вам придется попробовать это на компьютере с Linux или использовать что-то вроде Fink или Macports для его установки.

nmap -p 8080 host.domain.com

Надеюсь, это поможет.

Вы можете отключить брандмауэр или разрешить определенному приложению принимать входящие соединения. Кроме того, чтобы разрешить доступ к внешнему миру (например, www), вам необходимо перенаправить трафик на ваш внутренний шлюз: порт через настройки маршрутизатора.

Вот как это сделать:

  1. Mac-> Sys Preferences-> Sharing-> Включить флажок «Общий веб-доступ»
  2. Mac-> Настройки Sys-> Безопасность-> Отключить брандмауэр или разрешить приложению принимать входящее соединение

Откройте порт на маршрутизаторе (через 192.168.1.1) для пересылки трафика с your_web_ip: порт на local_gateway: порт

  1. Настройки маршрутизатора -> Переадресация портов -> Создать правило: переслать на локальный шлюз (например, 192.168.1.4), пользовательский порт, протокол tcp, source = any, destination = 3280, все типы соединений, forward to port = 8080.

Источник

Освободить порт UDP, используемый мертвым процессом в OS X

Я использую OS X 10.11.6 и пытаюсь запустить программу, которая обычно прослушивает порт UDP 8008 при запуске.

Читайте также:  Как проверить стабильность работы компьютера windows

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

К сожалению, при выходе из программы иногда порт остается открытым, даже если программа (родительская + дочерняя) больше не существует.

Когда это происходит, если я снова пытаюсь запустить программу, она, естественно, выдает ошибку с ошибкой EADDRINUSE , и в этих случаях, что бы я ни пытался, единственным решением, которое я нашел, была перезагрузка машины.

Мне трудно поверить, что я не могу освободить порт без перезагрузки.

Вот некоторые диагностические данные, которые я проводил до сих пор (все они были выполнены с sudo и без него):

Найдите процесс, используя порт 8008 с lsof :

Но на удивление не дает никаких результатов.

Однако с netstat мне повезло больше:

Итак, порт действительно привязан, и виноват pid 47205 , однако:

Ничего не возвращает. То же самое для PID 47206 и 47207 (безусловно, PID, назначенные дочерним элементам). Я также пробовал другие варианты grep (имя программы, путь и т. Д.).

Я также искал любой процесс, сообщающий 47205 как родительский:

Таким образом, дочерние процессы также явно мертвы.

Не имея возможности ничего сделать kill , я попытался SIGHUP launchd в надежде, что это может удалить любые дочерние процессы-зомби:

Но, увы, netstat по-прежнему показывает привязку к порту.

Наконец, я попытался перезапустить интерфейс обратной петли:

Но опять же безрезультатно.

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

Есть идеи, как принудительно освободить порт без перезагрузки?

  • Рассматриваемая программа — это Patchwork с электронной оболочкой.
  • Этот вопрос возник из этой проблемы с github.
  • Хотя было бы идеально найти решение / исправление, которое предотвращает возникновение проблемы, меня также интересуют способы вручную закрыть этот порт с терминала.

5 ответов

Действительно, можно закрыть порт вручную без перезапуска машины. В различных версиях Linux это обычно делается с помощью GDB путем выдачи системных вызовов, маскирующихся под процесс (например, close(fd) системный вызов для файлового дескриптора сокета).

Процесс для этого:

  • Откройте порт UDP: netcat -u 127.0.0.1 33333 .
  • Проверьте порт UDP: netstat -npu (u for UDP) , который даст вам PID, который занимает этот порт.
  • Выполните: lsof -np $pid для этого ПЛАТНОГО, чтобы получить дескриптор файла для сокета.
  • Затем запустите GDB для этого PID: sudo gdb -p 73599
  • Находясь внутри GDB, запустите call close(file_descriptor)

Вы увидите, что порта больше нет:

GDB доступен для MacOS, так что он должен работать и в вашем случае.

Один связанный вопрос: Mac изменил поведение SO_REUSEADDR и SO_REUSEPORT:

И я поддерживаю iptux [1], если я использую SO_REUSEPORT, программа может запуститься, но я не могу получить сообщение с этого порта, все сообщения отправляются на незакрытый порт как черная дыра.

В вашем коде после создания сокета, но перед вызовом bind , вызовите следующее:

Затем позвоните bind . Вышеуказанное позволит успешно выполнить привязку сокета, даже если порт используется.

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

Ваш вопрос похож на:

Наконец, я попытался перезапустить интерфейс обратной петли:

$ sudo ifconfig lo вниз

$ sudo ifconfig lo вверх

Вы пробовали перезапустить все доступные сетевые интерфейсы (lan или wlan), а не только loopback)?

Вместо ifconfig вы можете также использовать собственную командную утилиту MacOS (из здесь), чтобы выключить, а затем включить само устройство (адаптировать en0 к your device name ):

Вы также можете, наконец, попробовать освободить и обновить DHCP с помощью:

Система может держать сокет открытым до тех пор, пока не будет выполняться процесс ввода-вывода. Даже когда процесс умер, но не закрыл сокет явно. Если ваша розетка не закрывается в часы, скорее всего, вам что-то не хватает. Попробуйте использовать низкоуровневое исследование ядра вместо утилит верхнего уровня, таких как netstat или lsof.

Читайте также:  Ошибка продукт не найден windows 10 при активации

Я не эксперт по OS X и большинство команд для Linux. Я все равно оставляю его там, если у кого-то будет такая же проблема.

1. Попробуйте проверить, активен ли сокет (необязательно)

Я могу предложить проверить связь сокета.

Если вы видите какие-либо данные, передаваемые через сокет, вы можете быть уверены, что процесс активен. Или может быть одним из его детей. Позже вы можете поймать pid с помощью strace

2. Проверьте процесс и его статус

В Linux есть замечательные procfs . Вы можете получить оттуда так много всего. И убедитесь, что вы видите все открытые дескрипторы файлов.

Если вы видите вывод и существует / proc / 47205 , pid не выпущен, но ps показывает. Вы увидите все открытые файлы и их fds.

Где 133 — это номер fd

К сожалению, в OS X нет файловой системы / proc. Альтернативную команду я нашел.

Но я не уверен, что он работает на 100%.

3. Закрытие файлового дескриптора (сокета) в другом процессе

В linux есть хорошая команда

Это явно закроет все процессы, блокирующие порт. Кажется, в OS X тоже может быть fuser

Другой реальный способ хакеров — подключиться к процессу с помощью gdb и запускать команды внутри процесса, потому что номера файловых дескрипторов действительны только в среде процесса, в точности как написал @Mindaugas Бернатавичюс:

Есть третий способ : если возможно, вы можете просто перезапустить всю сеть. Пожалуйста, обратите внимание, что только интерфейс обратной петли вверх и вниз не достаточно. В Linux запустить

4. Что делать, чтобы сокет не завис в системе

Вы всегда должны гарантировать закрытие socked перед выходом из программы. Я видел много проблем с nodejs, когда сокеты остаются открытыми . Вызов Socket.destroy () решит проблему

Здесь можно разместить код уничтожения сокета перед выходом из приложения:

// Пользователь закрыл приложение. Убейте хост-процесс.

Источник

Ошибка сервера Tomcat-порт 8080 уже используется

Я получил следующую ошибку при попытке выполнить программу сервлета в Eclipse Mars EE.

‘запуск Tomcat v8.0 Sever на localhost ‘ столкнулся с проблемой.

порт 8080 требуется Tomcat v8.0 сервер на localhost уже находится в использовать. Возможно, уже запущен другой процесс или система процесс может использовать порт. Для запуска этого сервера вам необходимо остановите другой процесс или измените порт номер(а).

Что я должен сделать, чтобы остановить процесс? Я предполагаю, что сервер Tomcat 7 должен быть остановлен. Как это сделать, если моя операционная система Windows 8?

16 ответов

Если вы хотите восстановить номер порта 8080, вы делаете это, открыв Диспетчер задач, а затем вкладку процесс, щелкните правой кнопкой мыши java.exe процесс и нажмите на конец процесса, как показано на рисунке прилагается.

все, что мне нужно было изменить port numbers .

на Servers panel

щелкните правой кнопкой мыши на сервере Tomcat выберите Open , Overview window появится.

открыть Ports tab. Вы получите следующий:

я изменил номер порта HTTP/1.1 (т. е. 8081 )

возможно, Вам также придется изменить порт Tomcat adminport (т. е. 8006 ) и AJP/1.3 (т. е. 8010 ).

доступ приложения в браузере в http://localhost:8081/.

Для Ubuntu / Linux

Шаг 1: Найдите идентификатор процесса, который использует порт 8080

Шаг 2: убейте процесс, используя идентификатор процесса в приведенном выше результате

Для Windows

Шаг 1: Найдите идентификатор процесса

Шаг 2: Откройте командную строку как администратор и убейте процесс

в моем случае порт 8005 уже использовался, поэтому я использовал то же самое выше лестница.

выполните приведенную выше команду в командной строке первая команда найдет pid процессов, которые используют порт 8080 или любой другой порт, который вы используете. И во второй команде напишите pid вместо 21424.

У вас уже запущен другой экземпляр Tomcat. Вы можете подтвердить это, перейдя в http://localhost:8080 в вашем веб-браузере и проверьте, получаете ли вы домашнюю страницу Tomcat по умолчанию или страницу ошибок Tomcat 404. Оба являются одинаково действительными доказательствами того, что Tomcat работает нормально; если бы это было не так, то вы получили бы сообщение об ошибке тайм-аута HTTP-соединения браузера.

Читайте также:  Repairing windows from boot disk

вам нужно выключить его. Перейдите в подпапку /bin папки установки Tomcat и выполнить отключение.bat (Windows) или shutdown.sh (Unix) сценарий.

для получения дополнительной помощи, пожалуйста, chech это ответ.

из CMD или из PowerShell запустите.

команды netstat -АБ

выход должен быть в состоянии указать вам в направлении, в котором процесс удерживает порт 8080. Запись может быть 127.0.0.1: 8080 у вас все еще может быть запущенный экземпляр Tomcat в порту 8080.

затем вы можете использовать Stop-Process в PowerShell или» taskkill » в CMD, чтобы остановить этот процесс и выполнить программу в этот момент.

чтобы избавиться от этой ошибки, просто нажмите на вкладку сервера на eclipse . Вы получите список серверов, как показано ниже (в моем случае это был tomcat 8 only)

дважды щелкните на соответствующем сервере. Вы получаете экран, как показано ниже:

теперь измените конфликтующий номер порта. В моем случае я изменил 8080 на 8081 (выделенная часть). Сохраните его (ctrl+s) и, следовательно, вы можете запустить свой сервер сейчас.

Я бы предложил в конце java.exe или javaw.exe процесс из Диспетчера задач и повторите попытку. Это не завершит все приложение eclipse, но освободит порт.

вы можете решить эту проблему в два этапа:

Шаг 1: Откройте командную строку и введите netstat-a-o-f и нажмите enter (эта команда покажет все процессы, запущенные на вашем компьютере) https://i.stack.imgur.com/m66JN.png

Шаг 2: Введите TASKILL /F / PID 4036 (где F означает силу, а PID — Родительский идентификатор, а 4036 — идентификатор процесса 8080, здесь я использую некоторые случайные число) https://i.stack.imgur.com/Co5Tg.png

несколько раз, когда вы пытаетесь убить процесс, он выдаст исключение, сообщающее, что доступ запрещен, как показано на приведенном выше скриншоте, в этот момент Вы должны открыть командную строку как запуск от имени администратора https://i.stack.imgur.com/JwZTv.png

затем вернитесь к eclipse очистить проект, а затем попробуйте запустить проект

в случае пользователей MAC перейдите в терминал и выполните следующие действия

8080-это порт HTTP, а 8443-порт HTTPS по умолчанию.

вы можете прекратить использование выключения.bat внутри каталога установки tomcat. Или вы можете нажать кнопку «стоп» в представлении серверов eclipse. Чтобы добраться до вида выберите окно-показать вид-серверы

для пользователей Ubuntu с той же проблемой (например, сбой Eclipse во время отладки) сделайте netstat-a-p | grep 8095 (или любой другой номер порта, если сервер Tomcat), а затем убейте -9 этот процесс.

Откройте приложение ниже

C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Меню\Программы\Apache Tomcat 8.5 Tomcat8

щелкните правой кнопкой мыши на Apache tomcat в системном трее и нажмите на stop services

запустите приложение из eclipse.

вы можете остановить работающий сервер tomcat, выполнив следующие действия:

Шаг 1: Перейдите к пути установки tomcat (/bin) в вашей системе Windows

Шаг 2: Откройте cmd для этого каталога bin (вы можете легко сделать это, введя » cmd «в этом каталоге)

Шаг 3: Запустите «Tomcat7.exe stop»

Это остановит все запущенные экземпляры сервера tomcat, и теперь вы можете запустить сервер из своей среды Eclipse IDE.

способ, которым я решил эту проблему, установить TCPview перейти к TCP view и проверить, какие порты Tomcat использует там будет несколько других портов, кроме 8005,8009,8080 Теперь перейдите на вкладку серверы в eclipse дважды щелкните на Tomcatv9.0 сервер и изменить номера портов там. Это решит проблему.

дело в том , что у вас уже есть другой tomcat, работающий на порту 8080, вам нужно закрыть его. Вы можете сделать это несколькими способами. позвольте мне сказать вам 2 простых способов

  1. либо перейдите в место, где установлен tomcat, перейдите в каталог din и выполните завершение работы.летучая мышь или shutdown.sh
  1. Если вы находитесь в windows, перейдите в правую нижнюю панель уведомлений экрана, нажмите на стрелку вверх, чтобы увидеть больше запущенных служб, вы найдет здесь кота. щелкните правой кнопкой мыши и выберите shutdown. вот оно.

Источник

Оцените статью