即使目标文件未更改,Systemd 路径单元也会在启动时触发

即使目标文件未更改,Systemd 路径单元也会在启动时触发

我正在尝试使用 systemd 路径+服务在文件更改时触发 python 脚本。

我发现该脚本在启动时触发,与我更改文件的时间无关。

这是我的 .path 文件的片段:


PathChanged=/home/pi/network/trigger.txt
Unit=monitor.service

目前,当我正在测试时,monitor.service 只是触发一个脚本,该脚本会写入带有时间戳的日志文件。这是日志文件的片段:

 14:26:40 Friday September 3, 2021 file modified

当我执行 stat /home/pi/network/trigger.txt 时,

Access: 2021-07-14 17:07:42.871258883 -0400
Modify: 2021-08-24 16:53:00.879999930 -0400
Change: 2021-08-24 16:53:00.879999930 -0400

显然,该文件尚未被修改,但 .path 单元无论如何都会在启动时触发。这里发生了什么?

答案1

该路径不应monitor.service在启动时触发,但在启动时启用自身是一个常见的错误monitor.service

如果monitor.service包含通常的:

[Install]
WantedBy=multi-user.target

然后monitor.service将在启动时激活或者每当它被你触发时*.path

解决方案一:

如果这是第三方服务,则禁用该服务。这将阻止它在启动时激活,但不会阻止它被您的触发*.path

sudo systemctl disable monitor.service

解决方案2:

如果您monitor.service自己编写,则只需[Install]从 中删除该部分即可monitor.service

相关内容