systemd 的 StartLimitIntervalSec 和 StartLimitBurst 从不工作



我试图限制服务(在容器中(重新启动的次数。操作系统版本是 centos-release-7-5,服务文件几乎如下(为了方便阅读,删除了一些参数(。正如其他一些帖子指出的那样,它应该非常简单(服务器故障重启限制 1 的帖子,堆栈溢出的重新启动限制 2 的帖子(。然而,StartLimitBurst和StartLimitIntervalSec对我不起作用。

我用几种方法进行了测试:(1(我检查服务PID,用"kill -9 ****"杀死服务几次。该服务总是在 20 秒后重新启动!(2(我还试图弄乱服务文件,使容器永远无法运行。尽管如此,它仍然不起作用,服务文件只是不断重新启动。

知道吗?

[Unit]
Description=Hello Fluentd
After=docker.service
Requires=docker.service
StartLimitBurst=2
StartLimitIntervalSec=150s
[Service]
EnvironmentFile=/etc/environment
ExecStartPre=-/usr/bin/docker stop "fluentd"
ExecStartPre=-/usr/bin/docker rm -f "fluentd"
ExecStart=/usr/bin/docker run fluentd
ExecStop=/usr/bin/docker stop "fluentd"
Restart=always
RestartSec=20s
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target

我在单位堆栈交换中发布了问题。无论如何,万一有人在这里搜索它,自从我发现问题以来,我也在这里发布了我的答案。所有在线文档都表明所有参数都在 UNIT 文件(systemd 单元文件(中,但仍在我的系统(centos 7.5(中,它们在服务文件中。除了名称是"StartLimitInterval",而不是"StartLimitIntervalSec"。