centos systemctl实现服务自动重启
linux下通常可以用supervisor来实现守护进程自动重启,但是centos下的系统服务是通过service或者systemctl命令启动的,启动实际调用的运行指令并不包含service或者systemctl命令,supervisor监控不到,那么应该怎么实现这部分服务的自动重启呢其实centos的服务已经自带了方法就是在服务脚本中加上Restart指令我们以centos7以上为例子,cen
linux下通常可以用supervisor来实现守护进程自动重启,但是centos下的系统服务是通过service或者systemctl命令启动的,启动实际调用的运行指令并不包含service或者systemctl命令,supervisor监控不到,那么应该怎么实现这部分服务的自动重启呢
其实centos的服务已经自带了方法
就是在服务脚本中加上Restart指令
我们以centos7以上为例子,centos7开始服务命令已经从service换到systemctl
首先查找某个服务的脚本
[root@ecs-ooxx systemd]# systemctl status mariadb
● mariadb.service - MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since 二 2022-04-12 10:04:35 CST; 2h 7min ago
Main PID: 3131 (mysqld_safe)
loaded那里可以看到脚本路径
[root@ecs-ooxx systemd]# vim /usr/lib/systemd/system/mariadb.service
编辑这个脚本内容,在Service下添加Restart系列的4条指令
[Unit]
Description=MariaDB database server
After=syslog.target
After=network.target
[Service]
Restart=always
RestartSec=5
StartLimitInterval=0
StartLimitBurst=5
Type=simple
User=mysql
Group=mysql
参数详解:
Restart=always: 只要不是通过systemctl stop来停止服务,任何情况下都必须要重启服务,默认值为no
RestartSec=5: 重启间隔,比如某次异常后,等待5(s)再进行启动,默认值0.1(s)
StartLimitInterval: 无限次重启,默认是10秒内如果重启超过5次则不再重启,设置为0表示不限次数重启
另外:
StartLimitInterval和StartLimitBurst两个参数决定了对该服务重启次数的限制
默认情况下,一个服务在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=
一起使用, 但实际上,此选项作用于任何方式的启动(包括手动启动), 而不仅仅是由 Restart=
触发的启动。
修改完成后,需要更reload一下
[root@ecs-ooxx systemd]# systemctl daemon-reload
更多推荐
所有评论(0)