我正在尝试使用 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
。