systemd.path 单元中的 DirectoryNotEmpty 触发服务的频率是多少?

systemd.path 单元中的 DirectoryNotEmpty 触发服务的频率是多少?

如果我有一个一条路径监视器队列带有DirectoryNotEmpty指令的文件夹,以及A.服务处理并从中删除文件队列。如果我用以下命令启动路径单元队列包含 10 个文件,将一条路径触发服务直到文件夹变空?如果是这样,它多久尝试触发一次服务? (如果服务不改变内容呢?队列?)

谢谢

答案1

带有指令的 Systemd 路径单元DirectoryNotEmpty仅在目录中发生更改时才会触发相应的服务。 Systemd 内部使用inotifyAPI 来监视目录的更改。 Systemd 确实不是使用计时器定期启动服务,无论目录是否为空。这意味着在目录为空之前不会再次触发该服务。相反,服务必须处理目录中的所有文件,通常是通过处理文件并将它们删除或移动到其他目录。例如,如果该服务仅处理一个文件,并且此后目录中没有任何反应,则永远不会再次调用该服务。

“DirectoryWentFromEmptyToNonEmpty”可能是该指令更合适的名称DirectoryNotEmpty,尽管我的测试表明每次将文件添加到目录时都会触发该服务。 (这反过来又使事情变得有点复杂,因为,如果文件消耗进程需要很长时间,则可能有多个进程并行运行,需要进行协调。)

相关内容