如何配置 systemd 尝试重新启动服务,直到达到重新启动的限制。
我有一个脚本经常崩溃,每次发生这种情况时我都想重新启动它。但有一些限制:
每次重启之前,服务应该有 3 秒的延迟,服务应该只重试启动脚本 3 次,然后才需要手动重启。
Restart=on-failure
我想我已经找到了如何使用和使其在故障时延迟 3 秒重新启动,RestartSec=3
但我不知道如何进行限制重新启动。我已经找到了关于StartLimitIntervalSec
和StartLimitBurst
但我不知道如何使用它。这些是在服务启动时应用还是仅在重新启动时应用,以及如何使用它们?
答案1
我认为这对你有用:
[Unit]
StartLimitIntervalSec=10
[Service]
StartLimitBurst=3
- RestartLimitBurst 定义重试的次数
StartLimitIntervalSec
>StartLimitBurst
*RestartSec
StartLimitIntervalSec
[Unit]
自 2018 年以来已移至Systemd 单元配置不正确,这与下面的文档不同。
如果重启次数RestartLimitBurst
达到RestartLimitIntervalSec
,systemd 将停止重启。
以下是我在文档中找到的内容:systemd.unit — 单元配置
StartLimitIntervalSec=interval, StartLimitBurst=burst 配置单元启动速率限制。在间隔时间范围内启动次数超过突发次数的单元将不允许再启动。使用 StartLimitIntervalSec= 配置检查间隔,使用 StartLimitBurst= 配置每个间隔允许的启动次数。
interval 是一个时间跨度,默认单位为秒,但也可以指定其他单位,请参阅 systemd.time(5)。在管理器配置文件中默认为 DefaultStartLimitIntervalSec=,可以设置为 0 以禁用任何类型的速率限制。burst 是一个数字,在管理器配置文件中默认为 DefaultStartLimitBurst=。