我试图限制(容器中)重新启动服务的数量。操作系统版本为CentOs 7.5
,服务文件大致如下(为了阅读方便而删除了一些参数)。正如一些其他帖子所指出的,它应该是非常直接的(1,posts溢出重启限制2 )。然而,StartLimitBurst
和StartLimitIntervalSec
从未为我工作过。
我用几种方法进行了测试:
kill -9 ****
几次关闭服务。服务总是在20多岁后重新启动!有什么想法吗?
[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
发布于 2018-08-22 10:06:57
StartLimitIntervalSec=
是作为systemd v230的一部分添加的。在systemd v229及更低版本中,您只能使用StartLimitInterval=
。您还需要将StartLimitInterval=
和StartLimitBurst=
放在[Service]
部分,而不是[Unit]
部分。
若要在CentOS上检查系统版本,请运行rpm -q systemd
。
如果您升级到systemd v230或更高版本,[Service]
部分中的旧名称将继续工作。
来源:https://lists.freedesktop.org/archives/systemd-devel/2017-July/039255.html
您可以在没有看到任何错误的情况下解决这个问题,因为systemd会忽略未知的指令。systemd假设许多较新的指令可以被忽略,并且仍然允许服务运行。
可以手动检查单元文件中的未知指令。至少它似乎适用于最近的系统d:
$ systemd-analyze verify foo.service
/etc/systemd/system/foo.service:9: Unknown lvalue 'FancyNewOption' in section 'Service'
发布于 2018-08-21 18:19:41
我想我找到问题了。所有的在线文档都表明所有参数都在单元文件(系统单元文件)中,但仍然在我的系统(Centos7.5)中,它们在服务文件中。此外,名字是"StartLimitInterval",而不是"StartLimitIntervalSec“。
https://unix.stackexchange.com/questions/463917
复制相似问题