Systemd的StartLimitIntervalSec和StartLimitBurst永远无法工作

时间:2018-08-21 07:30:36

标签: linux systemd

我试图限制服务(在容器中)重新启动的次数。操作系统版本为centos-release-7-5,服务文件大致如下(已删除一些参数以方便阅读)。正如其他一些帖子所指出的(Post of Server Fault restart limit 1 Post of Stack Overflow restart limit 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

1 个答案:

答案 0 :(得分:0)

我在UNIT堆栈交换中发布了问题。无论如何,如果有人在这里搜索它,因为发现了问题,我也在这里发布了答案。所有在线文档都建议所有这些参数都在UNIT文件(systemd unit file)中,但仍在我的系统中(centos 7.5),它们都在服务文件中。除了名称是“ StartLimitInterval”,而不是“ StartLimitIntervalSec”。