首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Systemd的StartLimitIntervalSec和StartLimitBurst从来不起作用

Systemd的StartLimitIntervalSec和StartLimitBurst从来不起作用
EN

Unix & Linux用户
提问于 2018-08-21 16:40:41
回答 2查看 43.1K关注 0票数 24

我试图限制(容器中)重新启动服务的数量。操作系统版本为CentOs 7.5,服务文件大致如下(为了阅读方便而删除了一些参数)。正如一些其他帖子所指出的,它应该是非常直接的(1,posts溢出重启限制2 )。然而,StartLimitBurstStartLimitIntervalSec从未为我工作过。

我用几种方法进行了测试:

  1. 我检查服务PID,用kill -9 ****几次关闭服务。服务总是在20多岁后重新启动!
  2. 我还试图搞乱服务文件,使容器永远不运行。尽管如此,它仍然不能工作,服务文件只是继续重新启动。

有什么想法吗?

代码语言:javascript
运行
复制
[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
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 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:

代码语言:javascript
运行
复制
$ systemd-analyze verify foo.service
/etc/systemd/system/foo.service:9: Unknown lvalue 'FancyNewOption' in section 'Service'
票数 44
EN

Unix & Linux用户

发布于 2018-08-21 18:19:41

我想我找到问题了。所有的在线文档都表明所有参数都在单元文件(系统单元文件)中,但仍然在我的系统(Centos7.5)中,它们在服务文件中。此外,名字是"StartLimitInterval",而不是"StartLimitIntervalSec“。

票数 8
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/463917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档