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