Я пытался отладить проблемы с распределением портов в Jenkins на OS X, прослушивая определенные порты с помощью netcat, что привело к некоторым странным результатам.
В терминале OS X 10.8.2:
$ uname -rs
Darwin 12.2.1
$ nc -l 54321
Затем во втором терминале:
$ nc -l 54321
А в третьем терминале lsof
показывает, что оба экземпляра связаны с одним и тем же портом:
$ lsof -i | grep 54321
nc 70706 chris 3u IPv4 0x55618c024692f4d1 0t0 TCP *:54321 (LISTEN)
nc 70769 chris 3u IPv4 0x55618c0232cb8661 0t0 TCP *:54321 (LISTEN)
В Linux:
Первый терминал:
$ uname -rs
Linux 3.2.0-34-generic
$ nc -l 54321
Второй терминал:
$ nc -l 54321
nc: Address already in use
Почему OS X также не сообщает, что адрес уже используется?
lsof -i
, но что такое0x55618c024692f4d1
и0x55618c0232cb8661
? Если это IP-адреса, то это очевидно, потому что слушатель был привязан к определенному IP-адресу, а не к любому адресу. - person CodeCaster   schedule 05.12.2012fork()
илиdup()
). - person   schedule 05.12.2012lsof -i
дает мне 27 уникальных значений для этого поля (УСТРОЙСТВО); Я считаю, что это адрес памяти. Последний столбец показывает, что сокеты привязаны к*
. - person Christopher Orr   schedule 05.12.2012