避免在单元运行时使用 PathChanged 错过更改

避免在单元运行时使用 PathChanged 错过更改

我想监视一个文件并运行一个命令,只要文件发生变化,该命令就会将文件的内容应用到我的系统中。我目前正在使用路径单元触发服务单元来执行此操作。在下面的示例中,该命令只是将内容复制/somefile/otherfile

# /etc/systemd/system/example.unit
[Service]
ExecStart=/usr/bin/cp /somefile /otherfile
# /etc/systemd/system/example.path
[Path]
PathChanged=/somefile

[Install]
WantedBy=default.target

我面临的问题是,/somefile在命令运行时, 可能会被更改/替换。为了确保/otherfile始终以与 相同的内容结束/somefile,在这种情况下,服务完成后需要重新启动,但我找不到执行此操作的路径单元指令。

即使命令检查/somefile在复制时没有发生变化,在该检查和服务单元终止之间存在一个窗口,在此期间文件可能会被更改而无需重新启动单元。

我如何使用 systemd 实现这一点?

相关内容