启动时,process_queue
如果ConditionDirectoryNotEmpty=/unfinished_queue_jobs
,服务将启动,清除该目录,然后停止。
服务accept_new_jobs
应在process_queue
完成后启动,或者在该依赖项的条件失败时立即启动。
理想情况下, 的单元文件process_queue
不必accept_new_jobs
以任何方式引用(Before=
等等)
使用 systemd 表达这些依赖关系的最佳方法是什么?
答案1
失败的条件或断言不会导致单元进入“失败”状态。在执行排队的启动作业时检查条件和断言。排序依赖性仍然受到尊重,因此其他单元仍然被拉入并排序,就好像该单元已成功激活一样,并且条件和断言在单元正常启动的精确时刻执行,因此可以在之前订购的单元之后验证系统状态完成初始化。
请注意,[After= 和 Before=] 独立于并正交于 Requires=、Wants=、Requisite= 或 BindsTo= 配置的需求依赖项。在 After= 和 Wants= 选项中包含单元名称是一种常见模式,在这种情况下,列出的单元将在使用这些选项配置的单元之前启动。
因此我想我可以使用 After= 和 Wants= 来实现这一点。我会测试一下。