В моей системе, если я запускаю 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