我有几个使用“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