Linux
網路埠打開,但沒有附加程序?
我有一個奇怪的情況,一個開放的網路埠。我的主要問題是,為什麼沒有與開放 TCP 埠關聯的程序:
netstat -ln --program Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN -
對於我的具體情況,應該有一個 nrpe 守護程序(opsview 安裝)在埠 5666 上偵聽,但沒有執行 nrpe 守護程序。如果我嘗試啟動它,它會立即退出。
lsof -i :5666
也不顯示任何輸出。我的系統上沒有執行 (x)inetd。更新
是的,我以 root 身份執行這些命令。Telnet 可以,但從來沒有任何響應。
經過進一步調查,我發現了一個核心錯誤
dmesg
:這是一個執行舊核心的 EC2 實例(實際上是其中的幾個)(2.6.16 顯然不穩定)。阻止崩潰的解決方法是升級核心。看起來核心崩潰的方式導致程序消失並保持埠打開。
核心打開的埠不會顯示程序名稱。我想到了一些 NFS 和 OCFS 的東西。也許是這樣的?
或者它可能是一個核心錯誤。檢查核心日誌中的 OOPS 和 BUG。
您是否以 root 或 sudo 身份執行 netstat 和 lsof?注意最後一列:
netstat -ln --program tcp 0 0 192.168.21.1:53 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN - sudo netstat -ln --program tcp 0 0 192.168.21.1:53 0.0.0.0:* LISTEN 2566/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 2566/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3125/sshd
從 netstat 聯機幫助頁:
您還需要超級使用者權限才能在您不擁有的套接字上查看此資訊。
你怎麼知道沒有人跑?如果埠正在使用中,它會立即退出並出現“使用中的套接字”錯誤是有道理的。telnet 到埠時會發生什麼?
telnet localhost 5666