编写一个 systemd 单元服务,以便在不正常退出后使用不同的参数启动应用程序

编写一个 systemd 单元服务,以便在不正常退出后使用不同的参数启动应用程序

我需要一个 systemd 单元服务来启动不带参数的应用程序,并在崩溃时使用参数重新启动它。

我写了几个应用程序并且它们可以工作。但你永远不知道,因此我希望它们在崩溃时以详细模式重新启动,所以我在日志文件中拥有更多信息。

我在带有 Raspbian / Linux 9 (strech) 和 Systemd 232-25+deb9u2 的 Raspberry Pi 上运行它。

[Unit]
Description=Example Application
PartOf=app.service
After=app.service

[Service]
ExecStart=/home/pi/exampleApp
ExecRestart=/home/pi/exampleApp -V
Restart=always

[Install]
WantedBy=app.service

我让服务启动并重新启动应用程序。从对其他服务的依赖项开始也有效。但我找不到在应用程序重新启动时使用参数启动的解决方案。

有什么想法如何在崩溃/不干净退出后使用参数启动应用程序吗?

答案1

不确定是否有一个简单的解决方案(因此也许默认以详细模式启动应用程序可能值得考虑)。

这是一个至少可以实现您想要的部分功能的建议。ExecStart=如果应用程序运行良好,则下面显示的服务单元会以正常模式( )启动应用程序。如果应用程序由于某种原因无法启动,服务会ExecStopPost=在详细模式下运行第二次尝试(the )。

[Unit]
Description=verbose-start-on-failure Service
After=app.service

[Service]
RemainAfterExit=yes
ExecStart=/home/pi/exampleApp
ExecStopPost=/home/pi/exampleApp -V

[Install]
WantedBy=app.service

但是,如果应用程序成功启动,但由于某种原因稍后崩溃,此服务单元将不会自动重新启动它(添加依赖项PartOf=不起作用)。

相关内容