Как следует из названия, есть ли способ получать уведомления о недавно открытых сокетах с помощью inotify / inotify-tools? Насколько я могу судить, inotify работает только с inodes, и, в частности, проверка того, являются ли эти inodes сокетами, не является чем-то, на что 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
в частности, но я не могу точно сказать, есть ли там вообще соответствующие сооружения.
ОБНОВИТЬ: Я общий этот вопрос-ответ и Павел Емельянов - CRIUв первую очередь разработчик, подтвердил мои подозрения - скорее всего, вы не сможете получать эти уведомления с netlink
.
Обновление: вы можете отслеживать эти события с помощью Conntrack-Tools.