如何在失败时仅重启一次 Systemd 服务?

How to restart Systemd service only once on-failure?

我有一个服务应该只在出现问题时重新启动一次。 这是我的服务:

[Unit]
Description=Do job on boot
AllowIsolate=yes
StartLimitBurst=1    # or 2
StartLimitIntervalSec=3

[Service]
User=root
Type=idle

ExecStart=/usr/bin/python3 /var/www/flask/initJobs.py
Restart=on-failure
RestartSec=3

[Install]
WantedBy=multi-user.target

但是这个失败继续重启。

systemd 版本 241。

尝试添加 StartLimitAction=none 但没有任何改变。

好的,我找到了,所以只在 3 秒后失败时重新启动服务一次。

[Unit]
Description=Do job on boot
StartLimitBurst=2
StartLimitInterval=11          # StartLimitInterval >  RestartSec * StartLimitBurst
#OR
#StartLimitIntervalSec=11  

[Service]
User=root
Type=idle

ExecStart=/usr/bin/python3 /var/www/flask/initJobs.py
Restart=on-failure
RestartSec=3

[Install]
WantedBy=multi-user.target

这里的关键是StartLimitIntervalSec必须>到RestartSec * StartLimitBurstStartLimitBurst算第一个开始。