как исследовать порты, открытые определенным процессом в Linux?

if (Derived* derived = dynamic_cast<Derived*>(base)) {
   // do stuff with `derived`
}

Хотя это часто упоминается как антишаблон («использовать виртуальную рассылку!»), Иногда тип Derived обладает функциональностью, которой просто не обладает Base (и, следовательно, отдельными функциями), и это хороший способ включить эту семантическую разницу.

47
задан raven 5 December 2009 в 17:26
поделиться

3 ответа

netstat --all --program | grep '3265'
  • - все показывают слушающие и не слушающие сокеты.
  • - программа показывает PID и имя программы, которой принадлежит сокет.

Вы также можете использовать сканер портов, такой как Nmap.

75
ответ дан 26 November 2019 в 19:25
поделиться

В качестве примечания: netstat -ao будет читать / proc / PID / tcp и т.д., чтобы увидеть порты, открытые процессом. Это означает, что его считывающая информация предоставляется системой (ЯДРО Linux) и никоим образом не смотрит напрямую на сетевой интерфейс или другие средства. То же самое и с lsof.

Если вы делаете это в качестве меры безопасности, вы потерпели неудачу. Вы никогда (НИКОГДА) не должны доверять выводам netstat, даже если вы на 100% уверены, что действительно запускаете настоящую программу netstat (в отличие от троянской версии) или любую другую программу, которая читает файловую систему / proc. Некоторые люди, кажется, думают, что netstat, ls, ps или любые другие стандартные инструменты unix делают какую-то магию и опрашивают информацию из источников, правда в том, что все они полагаются на файловую систему / proc для получения всех своих данных, которые можно легко взломать с помощью руткита или гипервизора.

11
ответ дан 26 November 2019 в 19:25
поделиться

Вы можете использовать инструмент командной строки netstat с аргументом командной строки -p :

-p (Linux):

Процесс: Показать, какие процессы какие сокеты используют (аналогично -b в Windows). Для этого вы должны быть пользователем root.

В разделе примеров приведен следующий пример:

Отображение всех портов, открытых процессом с идентификатором $ PID :

 netstat -ao | grep '\ b' $ PID '\ b'
6
ответ дан 26 November 2019 в 19:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: