Linux
如果不使用 linux 中的網路命令行,如何知道開放埠列表和擁有它們的程序?
我想知道嵌入式linux中的哪些程序使用了哪些埠。由於是簡單的embedded-linux,沒有netstat、lsof等網路命令行。(僅存在 cat、cp、echo 等基本命令行)。
部分解決方案似乎是使用“cat /proc/net/tcp”和“cat /proc/net/udp”命令行。但是,我不確定這些命令行的列印列表是否顯示所有正在使用的埠,並且該列表不顯示哪個程序綁定到某個埠。
任何意見將不勝感激。
您應該能夠在
/proc/net/tcp
和中找到所有打開的埠/proc/net/udp
。這些文件中的每一個都有一個inode
列,可用於查找擁有該套接字的程序。一旦有了 inode 編號,就可以執行 ls 命令,例如
ls -l /proc/*/fd/* | grep socket:.$INODE
查找使用該套接字的程序。如果一個程序已經為不同的執行緒設置了不同的文件描述符,您可能需要擴展命令ls -l /proc/*/task/*/fd/* | grep socket:.$INODE
以找到它們。