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 单元不受此选项的影响, 因为这几种单元要么永远不会启动失败、要么只能成功启动一次。

posted @ 2018-04-02 14:21  行木辛  阅读(10074)  评论(0编辑  收藏  举报