Предисловие (пропустите для реальной проблемы): у меня есть приложение, которое прослушивает порт 843. Этот процесс запускается от имени пользователя root. Иногда убийство процесса (с помощью ^ C) оставляет его на долгое время (навсегда?). Будучи нетерпеливым, я убиваю его kill -9
, Проблема сейчас в том, что порт 843 все еще слушает, хотя там нет приложения.
Смотря на lsof -i
не показывает мне процессы, слушающие 843, даже при запуске от имени root. Смотря на netstat -a
однако, показывает, что это прослушивание, и даже некоторые соединения, которые были разорваны неправильно:
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp6 0 0 localhost.843 localhost.60927 CLOSE_WAIT
tcp6 386 0 localhost.843 localhost.60926 CLOSE_WAIT
tcp6 0 0 localhost.843 localhost.60925 CLOSE_WAIT
tcp6 386 0 localhost.843 localhost.60924 CLOSE_WAIT
tcp46 0 0 *.843 *.* LISTEN
tcp4 0 0 *.843 *.* LISTEN
Похожий вопрос рекомендует, чтобы я не попал в эту ситуацию в первую очередь. Это хороший совет, но немного сложный, поскольку это не мое заявление. Кроме того, было бы неплохо выбраться из этого независимо.
Как я могу выйти из этого беспорядка без перезагрузки? Важен ли тот факт, что я управлял им как root? (Мне нужен только root для прослушивания портов с низким номером, для которых я не нашел пути без установки программного обеспечения, такого как authbind)
netstat -lntp|grep 843
-lntp
вероятно означает что-то другое, чем вы хотите. В частности,-p
принимает аргумент (протокол). Каким будет выход?-p
в OSX: \