如何使用連接埠殺死“不可見”進程

如何使用連接埠殺死“不可見”進程

在 Linux 機器上,我嘗試啟動 Glassfish 伺服器。

./startserv

這將返回以下訊息:

There is a process already running using the admin port 4848 -- it is probably another instance of a Glassfish server

嘗試使用以下命令來識別這是哪個進程:

lsof -t -i tcp:4848

在另一台執行 Glassfish 的電腦上,此指令傳回 Glassfish 使用的進程 ID。但是,在我們遇到問題的機器上,沒有回任何內容。

鑑於沒有幫助,識別並終止使用連接埠 4848 的進程的最佳方法是什麼lsof -t -i tcp:4848

謝謝

答案1

這裡可能發生了兩件事。一是連接埠上有東西正在偵聽,而 lsof 和朋友錯過了它,或者啟動腳本/錯誤訊息很混亂。

網路命名空間可能會隱藏端口,但如果您想直接查詢 proc 檔案系統,請嘗試

grep 12f0 /proc/net/tcp
grep 12f0 /proc/net/tcp6

12f0 是十六進制的 4848,這些檔案是核心儲存有關 TCPv4 和 TCPv6 套接字資訊的位置。

如果你得到匹配的線路,那麼確實有東西在監聽端口,並且你的工具是sus。沒有命中意味著您正在運行命名空間或啟動腳本正在運行。

您也可以使用 netcat 檢查套接字是否確實在使用

nc -l 4848

如果它保持沉默,那麼就可以了,如果它抱怨套接字正在使用中,那麼它確實正在使用中,您需要檢查您的工具和命名空間是否正常。

相關內容