监视文件更改不适用于带有 systemd 的数据库文件

Monitor file changing doesn't works for database file with systemd

我想在下面这个路径下的文件系统中监控一个数据库文件:

/var/lib/mysql/mydatabase/onetable.idb

我设置了 systemd 服务,但它无法识别文件是否更改。如果我修改这个文件,没有任何反应,但如果修改了权限,它就可以工作。我也尝试用 inotifywait 监控这个文件,但我得到了同样的结果。

因为我知道 systemd 运行 是 root,所以我认为没有任何权限问题。路径是100%肯定有效的,因为我可以直接列出文件。

来自 inotify.7 联机帮助页:

   The inotify API does not report file accesses and modifications that
   may occur because of mmap(2), msync(2), and munmap(2).

这些例程在数据库实现中经常使用。

通过在 crontab 中插入以下代码暂时解决了这个问题:

*/3 * * * * test "`sudo find /var/lib/mysql/mydatabase/onetable.idb -mmin -4`" && /etc/myscript.sh

这不是永久的解决方案,因为我想做这个基于触发器的脚本 运行。