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