我试图延迟所有用户单元,WantedBy=default.target
直到系统处于我定义的“就绪”状态。
所以我有几个Type=oneshot
服务RemainAfterExit=true
, 和 是Before=
和RequiredBy=default.target
。他们ExecStart
要等到(重要的是,我发现,他们等待而不是失败并重新启动)进入就绪状态,然后成功退出,使服务保持活动状态。
只要所有用户单位都设置为After=default.target
如此,此操作就有效。
问题是,这确实是错误的方向,他们不应该需要知道我正在这样做,并且其中一些超出了我的控制范围(我知道我可以覆盖),由包分发并由我的用户启用。
有没有什么方法可以指定服务Before
不仅应该运行指定的目标,还应该运行由于成为WantedBy
该目标而触发的任何内容?
答案1
据我了解,您希望在某个目标启动之前运行服务。在这种情况下,您可以将服务放在 default.target 之前的目标中。参考https://www.freedesktop.org/software/systemd/man/bootup.html
请注意,此页面中同一级别的所有目标同时运行。
PS:我无法对这个问题发表评论。这可能不是一个正确的答案。