如标题所示,有没有一种方法可以使用 inotify/inotify-tools 通知最近打开的套接字?据我所知,inotify 仅适用于 inode,并且专门测试这些 inode 是否是套接字并不是 inotify 实际上能够做到的。除此之外,我似乎无法找到套接字 FD 的存储位置。我只能看到它们的文件描述符,它们是符号链接:
# ls -l /proc/29711/fd/10
lrwx------ 1 root root 64 Mar 6 17:04 /proc/29711/fd/10 -> socket:[750728]
# stat /proc/29711/fd/10
File: `/proc/29711/fd/10' -> `socket:[750728]'
Size: 64 Blocks: 0 IO Block: 1024 symbolic link
Device: 3h/3d Inode: 759700 Links: 1
Access: (0700/lrwx------) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2013-03-06 17:05:22.690411801 +1100
Modify: 2013-03-06 17:04:14.062414880 +1100
Change: 2013-03-06 17:04:14.062414880 +1100
Birth: -
Inotify 用于文件系统事件监控,所以除非有特殊的 FS 代表系统的套接字——没办法。
我建议查看netlink,
NETLINK_INET_DIAG
尤其是它,但我无法确定它是否具有相应的功能。更新:我已经分享了这个问答,Pavel Emelyanov—— CRIU的主要开发者,证实了我的怀疑——你很可能无法通过
netlink
.更新:您可以使用conntrack-tools跟踪这些事件。