使用 Systemd 服务监控文件

Ale*_*lex 5 linux ubuntu systemd

我有一个由运行在 ubuntu 服务器上的服务定期写入的文件。我有另一个当前在计时器上运行的服务,该服务检查写入的文件中是否有来自先前状态的更改,并在发生更改时更新 mysql 数据库表。我想设置某种服务,可以立即告诉文件何时发生更改,而不是等待计时器触发,但我还没有看到如何使用 systemd 设置文件监视。

Jde*_*eBP 5

systemd 机制是一个路径单元,您可以在其中命名要在 aPathChangedPathModified设置中监视的文件,具体取决于作者如何写入文件。

如果它每次都写入整个文件并关闭它,则PathChanged避免了 的陷阱PathModified,如果整个修改涉及多次写入仅写入文件的一部分,则容易过早激活。但是,另一方面,PathChanged即使文件仅被作者打开用于写入但从未实际写入,也可能被触发。

您可以将路径单元命名为与关联服务单元相同的名称,也可以使用该Unit设置。这个关联的服务单元当然是将文件内容传输到数据库的服务,没有多余的计时器。当文件中的相关更改发生时,路径单元会导致服务单元被激活(如果尚未激活)。这就是所谓的路径激活

进一步阅读

  • Lennart Poettering 等人。(2017)。 systemd.unit. systemd 手册页。freedesktop.org。
  • Lennart Poettering 等人。(2017)。 systemd.path. systemd 手册页。freedesktop.org。