首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >系统对RestartSec与StartLimitIntervalSec。这种配置有什么问题吗?

系统对RestartSec与StartLimitIntervalSec。这种配置有什么问题吗?
EN

Unix & Linux用户
提问于 2022-08-25 03:45:33
回答 1查看 293关注 0票数 2

我为Debian 11创建了一个systemd服务文件,它用于应该始终运行的python3脚本。

代码语言:javascript
运行
复制
[Unit]
Description=Printer service
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=user1
WorkingDirectory=/home/user1/myproject
ExecStart=/home/user1/myproject/venv/bin/python3 /home/user1/myproject/myscript.py

[Install]
WantedBy=multi-user.target

我不确定重新启动脚本需要多长时间。我需要增加RestartSec值吗?我想我不明白这个指令。假设脚本需要5秒才能完全激活,会让RestartSec=1中断吗?

我还添加了StartLimitIntervalSec=0,因为我没有限制系统在一定数量的故障之后停止激活服务的位置。如果服务因任何原因失败,系统是否会尝试永远重新启动?如果我不指定User,行为是什么?

最后,这些指令之间是否有任何不兼容之处。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-08-25 07:15:26

man systemd.service说:

RestartSec=在重新启动服务之前配置睡眠时间(使用Restart=配置)。取单位数小于秒的数值,或时间跨度值(如“5分钟20”)。默认为100 to。

这是服务停止或失败的时间。如果您的脚本需要一些时间才能启动,这是可以的,因为它处于“激活”阶段。

代码语言:javascript
运行
复制
                     |----RestartSec------|
---------|-----------|--------------------|------------|----------
 running    stopping    stopped             starting     running

man systemd.unit说:

StartLimitIntervalSec=interval,StartLimitBurst=burst配置单元启动速率限制。在间隔时间范围内启动时间超过突发时间的单元不允许再启动。使用StartLimitIntervalSec=配置检查间隔,使用StartLimitBurst=配置允许每个间隔启动多少次。interval是默认秒单位的时间跨度,但可以指定其他单位,请参见systemd.time(5)。默认为管理器配置文件中的DefaultStartLimitIntervalSec=,并且可以设置为0以禁用任何类型的速率限制。burst是一个数字,在管理器配置文件中默认为DefaultStartLimitBurst=。

所以如果你有这个,就没有冲突:

代码语言:javascript
运行
复制
Restart=always
RestartSec=1s
StartLimitIntervalSec=3s
StartLimitBurst=2

它将做的是:

  • 当单元停止/失败时,等待1s,然后再启动它。
  • 如果该单元在3秒内无法启动2次,则停止重新启动该单元。

如果你只有这个:

代码语言:javascript
运行
复制
Restart=always

然后使用默认值,这意味着:

代码语言:javascript
运行
复制
Restart=always
RestartSec=100ms
StartLimitIntervalSec=10s
StartLimitBurst=5

那么你的行为将是:

  • 如果单位停止,等待100毫秒,然后再启动它。
  • 如果该单元在10s内无法启动5次,则停止重新启动该单元。

根据您的评论,“您可以禁用任何类型的速率限制”。

代码语言:javascript
运行
复制
Restart=always
StartLimitIntervalSec=0

那么你的行为将是:

  • 如果单位停止,等待100毫秒,然后再启动它。
  • 无速率限制
票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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