我想监视一个文件并运行一个命令,只要文件发生变化,该命令就会将文件的内容应用到我的系统中。我目前正在使用路径单元触发服务单元来执行此操作。在下面的示例中,该命令只是将内容复制/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 实现这一点?