我为Debian 11创建了一个systemd服务文件,它用于应该始终运行的python3脚本。
[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
,行为是什么?
最后,这些指令之间是否有任何不兼容之处。
发布于 2022-08-25 07:15:26
RestartSec=在重新启动服务之前配置睡眠时间(使用Restart=配置)。取单位数小于秒的数值,或时间跨度值(如“5分钟20”)。默认为100 to。
这是服务停止或失败的时间。如果您的脚本需要一些时间才能启动,这是可以的,因为它处于“激活”阶段。
|----RestartSec------|
---------|-----------|--------------------|------------|----------
running stopping stopped starting running
StartLimitIntervalSec=interval,StartLimitBurst=burst配置单元启动速率限制。在间隔时间范围内启动时间超过突发时间的单元不允许再启动。使用StartLimitIntervalSec=配置检查间隔,使用StartLimitBurst=配置允许每个间隔启动多少次。interval是默认秒单位的时间跨度,但可以指定其他单位,请参见systemd.time(5)。默认为管理器配置文件中的DefaultStartLimitIntervalSec=,并且可以设置为0以禁用任何类型的速率限制。burst是一个数字,在管理器配置文件中默认为DefaultStartLimitBurst=。
所以如果你有这个,就没有冲突:
Restart=always
RestartSec=1s
StartLimitIntervalSec=3s
StartLimitBurst=2
它将做的是:
如果你只有这个:
Restart=always
然后使用默认值,这意味着:
Restart=always
RestartSec=100ms
StartLimitIntervalSec=10s
StartLimitBurst=5
那么你的行为将是:
根据您的评论,“您可以禁用任何类型的速率限制”。
Restart=always
StartLimitIntervalSec=0
那么你的行为将是:
https://unix.stackexchange.com/questions/714788
复制相似问题