Как узнать, какие порты прослушиваются определенным PID?

У меня есть PID определенного процесса, который прослушивает некоторые порты (ов) в моей ОС X, и мне нужно знать, какие порты (ы) прослушиваются этим процессом. Как мне это сделать?

Я знаю, что я могу использовать lsof чтобы узнать, какой процесс прослушивает какой-то порт, но мне нужно выполнить обратную операцию.

Спасибо.

UPD

OS X использует BSD utils, поэтому у меня BSD netstat не Linux netstat . Linux netstat имеет параметр -p для отображения PID, BSD netstat использует -p для указания порта и не имеет возможности показывать PID.

4 Solutions collect form web for “Как узнать, какие порты прослушиваются определенным PID?”

lsof предоставляет информацию о файлах, открытых процессами, включая сетевые порты. Он доступен практически во всех Unix-системах, включая OSX .

Rosetta Stone для Unix не перечисляет какой-либо другой инструмент для «сопоставления процесса с файлом или портом» в OSX.

Чтобы просмотреть процессы, прослушивающие TCP-порт, вы можете использовать

 lsof -iTCP -sTCP:LISTEN 

lsof -iUDP перечисляет процессы, имеющие открытый UDP-сокет. lsof -i перечисляет все открытые сетевые сокеты (TCP-клиенты, TCP-серверы и другие IP-протоколы).

Я нашел решение самостоятельно по глубокому чтению. (Да, RT * M по-прежнему помогает.) Спасибо @Gilles за прицеливание.

Вот решение: lsof -aPi -p 555 (555 – PID).

Объяснение:

  1. -p указать номер PID;
  2. -i отображать только сетевые устройства;
  3. -a to AND и два условия выше (иначе они будут ORed);
  4. -P для отображения номеров портов (вместо имени порта по умолчанию).

Кроме того, можно использовать lsof -aPi4 -p 555 или lsof -aPi6 -p 55 для IPv4 или IP6 только для соответствующих адресов.

Если вывод будет проанализирован другой программой, может оказаться полезным опция -Fn . С помощью этой опции lsof будет производить «вывод для другой программы» вместо хорошего форматированного вывода. lsof -aPi4 -Fn -p 555 выдаст что-то вроде этого:

 p554 nlocalhost:4321 

PS Все это я тестировал на своей ОС X El Capitan, но, как я вижу, он тоже должен работать на Linux.

В FreeBSD вы можете использовать sockstat для этой информации. Я не уверен, есть ли у OS X sockstat , так как у меня нет Mac.

Например, чтобы увидеть все TCPv4-соединения:

sockstat -4

если вы хотите узнать, какой порт прослушивается, вы можете использовать опцию net-net.px вам нужно быть суперпользователем:

 $ sudo netstat -nlp | grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 125004/nginx 

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

  • оболочка bash не появляется при запуске терминала
  • Как определить, нашли ли «найти» какие-либо совпадения?
  • Как запустить Google Chrome или Chromium на удаленном сеансе ssh?
  • Почему эта замена регулярных выражений не работает?
  • Поиск времени выполнения команды в ретроспективе
  • Могу ли я отменить SSH (после его использования для просмотра) без выхода из системы?
  • Как постоянно менять цвет STDOUT и STDERR на серый?
  • Ubuntu 16.04 USB - установка UEFI - не загрузится на компьютере BIOS
  • Как узнать, работает ли dd?
  • Поиск поврежденных файлов
  • Изучение Ubuntu - тестирование на Mac OS 10.7?
  • Как заставить «sox» признать «хромой»?
  • Interesting Posts

    Использует ли / usr / sbin / nologin в качестве оболочки для входа службу безопасности?

    Использование vim для просмотра содержимого файла каталога

    Как возможно, что gnome-software может устанавливать приложения в arch без доступа root?

    Запустите zsh с помощью специального zshrc

    Какую оболочку по умолчанию использовать для пользователя SSH, ограниченного одной командой

    печатать строки между началом и концом, используя sed

    Печать цветного текста с использованием скрипта

    Как улучшить качество ввода микрофона

    Новые сеансы tmux не содержат файл bashrc

    Как проверить загрузочный USB, созданный с помощью схемы разделов UEFI GPT

    Предотвратите завершение сеанса GNU-экрана после того, как пользователь будет убит пользователем

    Ошибка при поиске несуществующей строки с EDITOR = vi crontab -e

    Проблема с mv и добавление даты

    rsync только выбранные подкаталоги

    Как подключить tata фотон в X window manager в ubuntu 14.04 с помощью командной строки

    Linux и Unix - лучшая ОС в мире.