如何在失败时仅重启一次 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 * StartLimitBurst
和StartLimitBurst
算第一个开始。
我有一个服务应该只在出现问题时重新启动一次。 这是我的服务:
[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 * StartLimitBurst
和StartLimitBurst
算第一个开始。