Предисловие (пропустите для реальной проблемы): у меня есть приложение, которое прослушивает порт 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).