检查linux OS中打开的所有套接字

sta*_*k_A 22 c linux

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

sockfd = socket(AF_INET,SOCK_RAW,IPPROTO_ICMP)

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

关闭(的sockfd);

但问题是当程序运行不顺畅并且阻塞时.因此插座不会关闭.

如何检查在Linux OS下打开的所有套接字?

Cha*_*hak 30

/ proc/net/tcp-open tcp套接字列表

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

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

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

cat /proc/net/tcp

您也可以使用该lsof命令.

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

  • 这些是文件,使用cat命令查看,比如`cat/proc/net/tcp` (3认同)
  • 这些命令在ubuntu中不起作用(Ubuntu/Linaro 4.6.1-9ubuntu3))===>**root @ root:/ home/aa/test#/ proc/net/**:::::**dev_snmp6/netfilter/rpc/stat/** (2认同)

Sas*_*sky 29

您还可以使用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
Run Code Online (Sandbox Code Playgroud)

要显示所有套接字:

ss -a
Run Code Online (Sandbox Code Playgroud)

要显示UDP套接字:

ss -u -a
Run Code Online (Sandbox Code Playgroud)

要显示TCP套接字:

ss -t -a
Run Code Online (Sandbox Code Playgroud)

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


Nit*_*kar 17

您可以使用netstat命令

netstat --listen

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

netstat -vatn

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

netstat -vaun