問題描述
今天啓動項目一個執行機,報了一個Port already in use
的異常。
解決問題
端口占用一般解決思路就是拿到端口占用進程號,然後kill一下這個進程號即可。
Linux環境下或者macos可以藉助於lsof
命令解決這個問題,首先什麼是lsof
命令?
- lsof
lsof(list open files)是一個列出當前系統打開文件的工具,我們都知道在Unix中一切都是可以由文件進行描述的,直接輸入lsof命令輸入如下所示:
lsof輸出各列信息的意義如下:
- COMMAND:進程的名稱 PID:進程標識符
- USER:進程所有者
- FD:文件描述符,應用程序通過文件描述符識別該文件。如cwd、txt等
- TYPE:文件類型,如DIR、REG等
- DEVICE:指定磁盤的名稱
- SIZE:文件的大小
- NODE:索引節點(文件在磁盤上的標識)
- NAME:打開文件的確切名稱
通過上面的輸出列我們可以查詢到PID從而解決我們上面遇到的問題,其常用的命令格式如下
lsof -i tcp:port
參數說明:使用-i顯示所有連接,tcp只顯示tcp的鏈接信息,port可以填入實際想要查詢的端口號。通過這個查詢到PID然後kill掉進程即可解決端口占用的問題。