Как LSOF сопоставляет порт для обработки в Solaris?

У меня есть представление о том, как это делается в Linux, они, вероятно, проходят через / proc // fd и отображают сокеты, используемые каждым процессом.

К сожалению, это не похоже на сокеты списка записей / proc // fd в Solaris. Кто-нибудь знает, как lsof будет делать это в этой системе? Или как вообще об этом?

Просто для повторения, что именно мне нужно: мне нужен какой-то способ узнать, какие процессы слушают какие порты (без использования lsof, конечно) в Solaris.

2 ответа

Если вы используете Solaris 11.2, вы можете использовать netstat -u, По справочной странице:

-u

Перечисляет пользователя, идентификатор процесса и программу, которая первоначально создала конечную точку сети или контролирует ее сейчас.

/proc/<pid>/fd перечисляет все дескрипторы открытых файлов, в том числе связанные с сокетом, например:

# pwd
/proc/408/fd
# ls -l
total 4
c---------   1 root     sys       13,  2 Jul 31 23:12 0
c---------   1 root     sys       97,  1 Jul 31 23:06 1
p---------   0 root     root           0 Jul 31 23:06 10
p---------   0 root     root           0 Jul 31 23:06 11
c---------   1 root     sys       97,  1 Jul 31 23:06 2
-r--r--r--   1 root     root        1209 Jul 31 23:06 3
D---------   1 root     root           0 Jul 31 23:06 4
s---------   0 root     root           0 Jul 31 23:06 5
s---------   0 root     root           0 Jul 31 23:06 6
p---------   0 root     root           0 Jul 31 23:06 7
p---------   0 root     root           0 Jul 31 23:06 8
s---------   0 root     root           0 Jul 31 23:06 9

Здесь файловые дескрипторы 5,6 а также 9 безусловно, розетки, как показывает их s тип файла.

Не уверен насчет чего lsof делает под прикрытием, но чтобы получить детали сокета, pfiles читает процесс внутренних структур. Смотрите его методы дозокета.

Другие вопросы по тегам