systemd取消对服务重启的限制
默认情况下,一个服务在10秒内最多允许启动5次。当超过5次后,会报如下错误:
Job for xx.service failed because start of the service was attempted too often. See "systemctl status xxx.service" and "journalctl -xe" for details. To force a start use "systemctl reset-failed xxx.service" followed by "systemctl start xxx.service" again.
可以通过以下两个选项来设置服务启动的频率:
StartLimitIntervalSec=
, StartLimitBurst=
设置单元的启动频率限制。 StartLimitIntervalSec=
用于设置时长, 默认值等于 DefaultStartLimitIntervalSec=
的值(默认为10秒),设为 0 表示不作限制。
StartLimitBurst=
用于设置在一段给定的时长内,最多允许启动多少次, 默认值等于 DefaultStartLimitBurst=
的值(默认为5次)。 虽然此选项通常与 Restart=
(参见 systemd.service(5)) 一起使用, 但实际上,此选项作用于任何方式的启动(包括手动启动), 而不仅仅是由 Restart=
触发的启动。
注意,一旦某个设置了 Restart=
自动重启逻辑的单元触碰到了启动频率限制,那么该单元将再也不会尝试自动重启; 不过,如果该单元后来又被手动重启成功的话,那么该单元的自动重启逻辑将会被再次激活。 注意,systemctl reset-failed 命令能够重置单元的启动频率计数器。 系统管理员在手动启动某个已经触碰到了启动频率限制的单元之前,可以使用这个命令清除启动限制。 注意,因为启动频率限制位于所有单元条件检查之后,所以基于失败条件的启动不会计入启动频率限制的启动次数之中。 注意, slice, target, device, scope 单元不受此选项的影响, 因为这几种单元要么永远不会启动失败、要么只能成功启动一次。