Я пытаюсь получить все процессы, прослушивающие сетевое соединение в Mac OS X. У netstat
меня нет -p
опции, и я пытаюсь с помощью lsof
lsof -i -sTCP:LISTEN
дает мне честный список процессов прослушивания, но не все. Я могу, например, telnet к порту 10080, где у меня есть процесс прослушивания соединения, но это не показано в выводе lsof
. Чего мне не хватает?
$ telnet localhost 10080
Trying ::1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> Connection closed.
но
$ sudo lsof -n -i | grep 10080
$
amanda
вместо 10080?-n
влияет только на адреса, а не порты. Чтобы получить номера портов, я должен использовать-P
тоже. Спасибоlsof -i -sTCP:LISTEN
, и он без,-n
и он не показал 10080 тоже. Таким образом, вы должны использовать-P
.Ответы:
Все возвращают те же 32 записи (
... | wc -l
) на моем сильно используемом Lion MBP.-P -n
препятствуетlsof
выполнению разрешения имен и не блокирует Пропустить любой из них, это может быть очень медленно.Для UDP:
sudo lsof -iUDP -P -n | egrep -v '(127|::1)'
. Без-n
и-P
, это занимает много времени.Напоминание: сюда не входят настройки брандмауэра.
источник
-P
. Я ошибочно предположил, что-n
применяется не только к IP-адресам, но и к номерам портов.Сначала выясните идентификатор процесса (pid), который занял требуемый порт (например, 5434):
Убей этот процесс:
источник
ps aux
не перечисляет порты, используемые процессомkill -9
в качестве первого варианта для избавления от процесса является крайним выбором. Кроме того, это на самом деле не отвечает на вопрос, который заключается не в убийстве вещей, а в том, чтобы выяснить, что происходит.