我們平時在測試物聯網設備的時候,可能通過特殊方法獲取了當前的設備的shell【如串口等等】。
這時,我們往往需要查找該設備開啟端口對應的服務,再對該服務進行測試。但是在通過端口查找進程的過程中可能會遇到一些問題,因為物聯網中的Linux系統(tǒng)往往經過精簡,很多命令的參數無法使用
使用netstat
這是最常用的方法之一,Netstat可以用來顯示顯示網絡連接,路由表,網絡接口狀態(tài)等等
Netstat在桌面版或者是服務器版的Linux上使用一般沒有問題,但是該命令在嵌入式系統(tǒng)中往往被精簡
sudo netstat -tulpn
從圖中我們可以看到8000端口上運行的服務是python
解釋一下每個參數的含義
-t 顯示tcp連接
-u 顯示udp連接
-l 顯示監(jiān)聽的套接字
-p 顯示進程ID和該進程的名稱
-n 顯示數字地址
使用ss命令
ss命令可以用來顯示處于活動狀態(tài)的套接字信息。ss命令可以用來獲取socket統(tǒng)計信息,它可以顯示和netstat類似的內容。但ss的優(yōu)勢在于它能夠顯示更多更詳細的有關TCP和連接狀態(tài)的信息,而且比netstat更快速更高效
sudo ss -tulpn
如果netstat沒有相關參數,建議師傅們試試這個命令
使用losf
顧名思義,losf是一個列出當前系統(tǒng)打開文件的工具,不過該命令在一般嵌入式Linux可能沒有
sudo lsof -i :8000
fuser
fuser命令用于報告進程使用的文件和網絡套接字
sudo fuser 8000/tcp
br
如上圖所示24254即為PID
接下來通過ps命令查找進程的詳細信息
ps -p 24254
或者也可以直接使用fuser中的-v參數:
sudo fuser -v 8000/tcp