前言(跳過真正的問題):我有一個正在偵聽連接埠 843 的應用程式。有時終止進程(使用 ^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 這樣的軟體)。