Вопрос или проблема
Одним из вариантов является использование утилиты lsof
; конкретно, lsof -i 4tcp
покажет все процессы с открытыми сетевыми TCP сокетами IPv4. Manpage утилиты 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
используйте это:
netstat -p tcp -p udp
вместе с этим:
lsof -n -i4TCP -i4UDP
На мой вкус https://github.com/mezantrop/sockstat имеет легко запоминающиеся аргументы:
sudo sockstat -T -l
Это должно быть возможно в окне терминала с помощью команды Netstat.
И если вы предпочитаете графический интерфейс:
С Mac OS X 10.5, в папке
/Applications/Utilities
содержится сетьвая утилита под названием:
Network Utility, смотрите вкладку Netstat для
представления этих данных в графическом
приложении, а также Ping, Lookup,
Traceroute, Whois, Finger и Port
Scan.
Ответ или решение
Для того чтобы определить, какие процессы открыли TCP/IP порты на Mac OS X, вы можете воспользоваться несколькими инструментами и методами, каждый из которых имеет свои особенности и применимость в зависимости от предпочитаемого вами подхода к задаче.
Использование lsof
Наиболее популярный и мощный инструмент для этих целей — утилита lsof
(от "list open files"). Она позволяет показать список всех процессов с открытыми TCP IPv4 сетевыми сокетами. Используйте следующий командный синтаксис:
lsof -i 4tcp
Для определения процессов, использующих конкретный порт, например 8080, примените следующую команду:
lsof -i 4tcp:8080 -sTCP:LISTEN
Если вам нужно только PID процесса, вы можете сделать это с помощью опции -Fp
:
lsof -i 4tcp:8080 -sTCP:LISTEN -Fp
Продвинутые параметры lsof
Для того чтобы получить список всех процессов, взаимодействующих с любым из специфических портов, например как TCP, так и UDP порт 53 и исключить разрешение IP-адресов и портов в имена хостов и сервисов, рекомендуется использовать:
sudo lsof -iTCP:53 -iUDP:53 -n -P
Запуск lsof
под пользователем root
предоставит вам более полный список процессов.
Использование netstat
netstat
— это еще один полезный инструмент для получения информации о сетевых соединениях:
netstat -p tcp -p udp
Однако, для более современной информации, рекомендуется использовать lsof
из-за устаревания некоторых функций netstat
.
Инструмент sockstat
Утилита sockstat
может быть удобна благодаря простоте использования:
sudo sockstat -T -l
GUI: Сетевая утилита Mac OS X
Если вы предпочитаете графический интерфейс, Mac OS X предоставляет утилиту "Network Utility", которая находится в папке /Applications/Utilities. Вы можете использовать вкладку "Netstat" для получения информации о сетевых соединениях в формате, удобном для чтения и анализа.
Информация, приведенная выше, охватывает основные методы для получения сведений о TCP/IP портах на Mac OS X. Эти инструменты и команды помогут вам эффективно управлять и мониторить сетевые подключения на вашем устройстве, обеспечивая надёжный способ контроля вашей системы.