Назад | Перейти на главную страницу

lsof не показывает установленное TCP-соединение

В моей системе, если я запускаю netstat для порта, он возвращает:

$ netstat -nat | grep "60964"
tcp        0      0 192.0.0.1:60964             0.0.0.0:*            LISTEN      
tcp       59      0 192.0.0.1:60964             192.0.0.6:46962      ESTABLISHED

Если я запустил lsof:

$ lsof -i4 | grep "60964"
process_x  2585 root  189u  IPv4  12708      0t0  TCP 192.0.0.1:60964 (LISTEN)

Почему здесь есть разница в выводе? Почему lsof не определяет "установленное" соединение.

Спасибо!

Изменить: я должен упомянуть, что запускаю вышеуказанные команды как root.

в отличие netstat, lsof требуются привилегии root, чтобы распечатать все открытые порты в системе. Хотя lsof manpage рекомендует lsof для установки setuid root в Linux и setgid в BSD и многих других Unix, на самом деле большинство установок предпочитают этого не делать. (Следует ли включать эти разрешения - другой вопрос.)

Следовательно lsof отображает соединение для любого процесса, выполняемого только текущим пользователем. Чтобы получить полный список подключений, запустите lsof с привилегиями root.

Ты пробовала

lsof -i TCP -sTCP:ESTABLISHED