Как узнать, какие процессы имеют открытые порты TCP/IP в Mac OS X?
5 ответов
Одной из альтернатив является использование утилиты lsof
; в частности, lsof -i 4tcp
выведет список всех процессов с открытыми сетевыми сокетами TCP IPv4. Man- страница lsof
предоставит вам подробную информацию о том, как использовать утилиту и как интерпретировать вывод.
Если вас интересует конкретный порт, вы можете использовать этот пример:
lsof -i 4tcp:8080 -sTCP:LISTEN
Если вы хотите получить только идентификатор процесса, вы можете запустить это:
lsof -i 4tcp:8080 -sTCP:LISTEN -Fp
Я использую приведенную ниже команду, когда хочу увидеть все, что находится на определенном порте для TCP или UDP. Опция -n
отключает попытку преобразования IP-адресов в доменные имена, а -P
отключает попытки выяснить имя определенного порта. Кроме того, запуск от имени пользователя root
покажет вам больше процессов, чем от имени обычного пользователя.
sudo lsof -iTCP:53 -iUDP:53 -n -P
В следующем примере кода перечислены все запущенные TCP-серверы на вашем локальном компьютере с OSX:
netstat -a -Ptcp | egrep 'tcp4.*LISTEN'
tcp4 0 0 127.0.0.1.2022 *.* LISTEN 0 0
tcp4 0 0 *.3141 *.* LISTEN 0 0
LISTEN
показывает только сокеты, прослушивающие соединения. То есть серверы.
Первая строка показывает сервер, связанный с localhost
, он же 127.0.0.1
, порт 2022
. Он будет отвечать на локальные запросы, но не на интернет-запросы.
Вторая строка - это сервер, связанный со всеми адресами, т.е. *
, порт 3141
. Он будет отвечать на запросы Интернет.
Для просмотра списка портов, используемых клиентами и серверами, используйте следующее:
netstat -an -Ptcp | grep tcp4
Это должно быть возможно в окне терминала с помощью команды Netstat .
И если вам больше нравится GUI:
В Mac OS X 10.5 папка /Applications /Utilities содержит сетевую утилиту под названием: Network Utility, см. На вкладке Netstat эти статистические данные, представленные в приложении GUI, а также Ping, Lookup, Traceroute, Whois, Finger и Port Scan.