在 Red Hat 上按特定顺序启动服务?

在 Red Hat 上按特定顺序启动服务?

我有几个使用“ExecStart=/usr/bin/java -jar”的服务,我希望它们尽可能晚地启动(在网络、防火墙和登录服务之后)。

我尝试在“After”和“Requires”中列出[Unit]中的不同依赖项,但它似乎没有做任何事情。如果我查看启动日志,我的服务将在所有依赖项之前启动。

我尝试过(例如),

[Unit]
Description=My Service 01
Requires=network.target
After=systemd-user-sessions.service network.target

我可以看到 crond 在启动顺序中最后启动,所以我尝试过。

[Unit]
Description=My Service 02
After=crond.service

没有区别...我的服务早在 crond 之前就开始了。

有什么建议么?难道我做错了什么? Red Hat 7.2 和 7.3 上的情况相同。

答案1

Arch wiki sysyemd 页面对此有一些见解:

请注意,Wants= 和 Requires= 并不意味着 After=,这意味着如果未指定 After=,则两个单元将并行启动。

对于每个依赖项,您可能需要添加两个都aRequires以及After您希望其在之后启动的每个单元:

[Unit] 
Description=My Service 02 
Requires=crond.service
After=crond.service

相关内容