linux- systemd 服务:如果服务失败,则尝试在有限次数内重新启动它

linux- systemd 服务:如果服务失败,则尝试在有限次数内重新启动它

如何配置 systemd 尝试重新启动服务,直到达到重新启动的限制。

我有一个脚本经常崩溃,每次发生这种情况时我都想重新启动它。但有一些限制:

每次重启之前,服务应该有 3 秒的延迟,服务应该只重试启动脚本 3 次,然后才需要手动重启。

Restart=on-failure我想我已经找到了如何使用和使其在故障时延迟 3 秒重新启动,RestartSec=3但我不知道如何进行限制重新启动。我已经找到了关于StartLimitIntervalSecStartLimitBurst但我不知道如何使用它。这些是在服务启动时应用还是仅在重新启动时应用,以及如何使用它们?

答案1

我认为这对你有用:

[Unit]
StartLimitIntervalSec=10
[Service]
StartLimitBurst=3
  1. RestartLimitBurst 定义重试的次数
  2. StartLimitIntervalSec> StartLimitBurst*RestartSec
  3. StartLimitIntervalSec[Unit]自 2018 年以来已移至Systemd 单元配置不正确,这与下面的文档不同。

如果重启次数RestartLimitBurst达到RestartLimitIntervalSec,systemd 将停止重启。

以下是我在文档中找到的内容:systemd.unit — 单元配置

StartLimitIntervalSec=interval, StartLimitBurst=burst 配置单元启动速率限制。在间隔时间范围内启动次数超过突发次数的单元将不允许再启动。使用 StartLimitIntervalSec= 配置检查间隔,使用 StartLimitBurst= 配置每个间隔允许的启动次数。

interval 是一个时间跨度,默认单位为秒,但也可以指定其他单位,请参阅 systemd.time(5)。在管理器配置文件中默认为 DefaultStartLimitIntervalSec=,可以设置为 0 以禁用任何类型的速率限制。burst 是一个数字,在管理器配置文件中默认为 DefaultStartLimitBurst=。

相关内容