【问题标题】:check all socket opened in linux OS检查在 linux 操作系统中打开的所有套接字
【发布时间】:2013-07-08 09:38:10
【问题描述】:

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

sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)

发送完数据后socket关闭:

关闭(sockfd);

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

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

【问题讨论】:

  • 询问打开的“文件”列表 lsof
  • 如果您需要在代码中处理,您应该维护一个有效套接字列表并在需要时关闭。
  • 题外话,你应该检查socketfd的值(从socket返回)以获得更好的错误处理。
  • 是的,每次创建socket时socket编号都是一样的!
  • 如果一个进程终止,它的所有文件描述符都被关闭(由内核)。

标签: c linux


【解决方案1】:

您还可以使用 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

【讨论】:

    【解决方案2】:

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

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

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

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

    cat /proc/net/tcp

    您也可以使用lsof 命令。

    lsof 是一个命令,意思是“列出打开的文件”,在很多地方都会用到 类 Unix 系统报告所有打开文件和进程的列表 打开它们。

    【讨论】:

    • 这些命令在 ubuntu 中不起作用 (Ubuntu/Linaro 4.6.1-9ubuntu3)) ===> root@root:/home/aa/test# /proc/net/ ::::: dev_snmp6/netfilter/rpc/stat/
    • 这些是文件,使用cat命令查看,如cat /proc/net/tcp
    • 通常使用lsof 比使用这些更容易。
    • lsof 没有列出 RAW 套接字(至少在 CentOS 上没有)。他们确实出现在cat /proc/net/raw
    • 特别是,如果您愿意检查 netlink 套接字,请参阅/proc/net/netlink,它显示了包括内核在内的所有 netlink 套接字。
    【解决方案3】:

    你可以使用netstat命令

    netstat --listen

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

    netstat -vatn

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

    netstat -vaun

    【讨论】:

    • RAW ICMP 套接字未显示在我系统的 netstat 中。 Chankeys 回答在 CentOS 上对我有用 cat /proc/net/raw
    • @tricky 那是因为你必须使用 netstat -w -l,或者更好的是 ss -w -l。这些命令将显示 listening 原始套接字。如果您想了解更多信息,请使用例如 ss -w -lnp
    猜你喜欢
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 2021-12-08
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 2014-08-21
    相关资源
    最近更新 更多