【问题标题】:Monitor file changing doesn't works for database file with systemd监视文件更改不适用于带有 systemd 的数据库文件
【发布时间】:2019-01-19 20:42:16
【问题描述】:

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

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

我设置了一个 systemd 服务,但它无法识别文件是否更改。如果我修改这个文件,什么都没有发生,但是如果修改了权限,它就可以工作。我也尝试使用 inotifywait 监控此文件,但得到了相同的结果。

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

【问题讨论】:

    标签: database mariadb systemd inotify


    【解决方案1】:

    来自 inotify.7 手册页:

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

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

    【讨论】:

    • 如果inotify不支持,我应该使用哪个软件?
    【解决方案2】:

    通过在 crontab 中插入这段代码临时解决了这个问题:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多