我有一个由 ubuntu 服务器上运行的服务定期写入的文件。我有另一个服务当前在计时器上运行,该计时器检查写入的文件是否有较之前状态的更改,并在发生更改时更新 mysql 数据库表。我想设置某种服务,可以立即告知何时对文件进行更改,而不是等待计时器触发,但我还没有看到如何使用 systemd 设置文件监视。
答案1
systemd 的机制是路径单元PathChanged
,您可以在其中命名要在一个或一个设置中观看的文件PathModified
,具体取决于编写器写入文件的方式。
如果它写入整个文件并每次关闭它,则PathChanged
可以避免 的陷阱PathModified
,如果整个修改涉及仅写入文件的一部分的多次写入,则容易过早激活。但是,另一方面,PathChanged
即使文件仅由写入者打开用于写入但从未实际写入,也可能会被触发。
您可以将路径单元命名为与关联的路径单元相同的名称服务单位或使用该Unit
设置。当然,这个关联的服务单元将是您将文件内容传输到数据库的服务,没有多余的计时器。当文件中发生相关更改时,路径单元会导致服务单元被激活(如果尚未激活)。这就是所谓的路径激活。
进一步阅读
- 伦纳特·珀特林等人。 (2017)。
systemd.unit
。 systemd 手册页。 freedesktop.org。 - 伦纳特·珀特林等人。 (2017)。
systemd.path
。 systemd 手册页。 freedesktop.org。