35

我的程序用这个函数打开一个套接字:

sockfd = 套接字(AF_INET,SOCK_RAW,IPPROTO_ICMP)

完成发送数据后,套接字关闭:

关闭(sockfd);

但问题是当程序运行不好并且被阻塞时。因此套接字不会被关闭。

如何检查在 Linux 操作系统下打开的所有套接字?

4

3 回答 3

51

您还可以使用ss实用程序转储套接字统计信息。

转储摘要:

ss -s

Total: 91 (kernel 0)
TCP:   18 (estab 11, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0

Transport Total     IP        IPv6
*         0         -         -        
RAW       0         0         0        
UDP       4         2         2        
TCP       18        16        2        
INET      22        18        4        
FRAG      0         0         0

要显示所有套接字:

ss -a

要显示 UDP 套接字:

ss -u -a

显示 TCP 套接字:

ss -t -a

在这里你可以阅读 ss man: ss

于 2015-07-20T15:05:55.763 回答
45

/proc/net/tcp - 打开的 tcp 套接字列表

/proc/net/udp -打开的 udp 套接字列表

/proc/net/raw -a 列出所有“原始”套接字

这些是文件,使用cat命令查看它们。例如:

cat /proc/net/tcp

您也可以使用该lsof命令。

lsof 是一个命令,意思是“列出打开的文件”,在许多类 Unix 系统中用于报告所有打开文件的列表以及打开它们的进程。

于 2013-07-08T09:40:11.147 回答
24

您可以使用netstat命令

网络统计——听

要显示打开的端口和已建立的 TCP 连接,

netstat -vatn

要仅显示打开的 UDP 端口,请尝试以下命令:

网络统计-vaun

于 2013-07-08T11:20:19.213 回答