Embora o inotify FAQ implique suporte parcial:
Q: Can I watch sysfs (procfs, nfs...)?
Simply spoken: yes, but with some limitations. These limitations vary between kernel versions and tend to get smaller. Please read information about particular filesystems.
ele não diz realmente o que pode ser suportado (ou em qual versão do kernel, já que é basicamente o suporte ao inotify no sistema de arquivos em si, ao invés da biblioteca / utilitários).
Uma explicação simples é que realmente não faz sentido apoiar inotify para tudo em /sys
(ou /proc
), já que eles não são modificados no sentido convencional. A maioria desses arquivos / diretórios representa um instantâneo do estado do kernel no momento em que você os exibe .
Pense no /proc/uptime
como um exemplo simples, ele contém o tempo de atividade preciso ao centésimo segundo. Deve inotify notificá-lo 100 vezes por segundo que foi "escrito" para? Além de não ser muito útil, seria tanto um problema de desempenho quanto um problema difícil de resolver, já que nada está gerando eventos de inotificação em nome dessas "gravações" fictícias. Dentro do kernel inotify funciona no nível da API do sistema de arquivos .
A situação então é que algumas coisas em sysfs e procfs geram eventos de inotify, /proc/uptime
por exemplo irá dizer quando foi acessado (access, open, close), mas no meu O kernel /proc/mounts
não mostra nenhum evento quando os sistemas de arquivos são montados e desmontados.
Eis a opinião de Greg Kroah-Hartman:
link e Linus:
(ambos os tópicos de 2014, no entanto)
Para resolver seu problema imediato, você pode usar o dbus, por exemplo dbus-monitor --monitor --system
(não precisa ser root) mostrará o acionador em dispositivos de tun sendo criados e removidos (embora o meu não mostre o nome do dispositivo tun, apenas a string HAL com o IP PtP); udevadm monitor
(não precisa ser root); ou voltar a pesquisar o diretório (tente: script para monitorar novos arquivos em uma pasta compartilhada (windows host, linux guest) ).
(Com udev
, você também pode usar inotifywait -m -r /dev/.udev
e ficar atento aos arquivos que começam com "n", mas isso é um truque bem feio.)