防止 Systemd Requires 在重新启动时执行

防止 Systemd Requires 在重新启动时执行

我有一个应用程序,我想在启动时编译一次,如果成功,则运行它。我有两项服务:compile-apprun-app​​ 。当我使用它设置它时,Requires它可以工作,但每当我这样做时,systemctl restart run-app它也会重新运行compile-app,这是我不想要的。

如何重组我的服务,使其compile-app在手动重新启动时不运行run-app

# compile-app.service

[Unit]
Description=compile app
After=network-online.target syslog.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=some command
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

# run-app.service

[Unit]
Description=run app
After=network-online.target syslog.target
Wants=network-online.target
Requires=compile-app.service

[Service]
Type=simple
ExecStart=some command

[Install]
WantedBy=multi-user.target

EOF

就是我现在所拥有的。

答案1

RemainAfterExit=true应该已经成功了。您确定compile-app.service当您停止/重新启动另一个单元时,它真的停止/重新启动吗?

您还应该添加compile-app.serviceAfterof run-app.service。现在的情况是,两个服务之间没有顺序关系,所以它们会并行启动。请记住,这Wants/Requires/Conflicts并不意味着任何顺序,同样,Before/After也不意味着任何依赖性。

相关内容