CentOS 7配置使某服务在崩溃或退出后自动启动

这里特指用systemctl启动的服务。

默认情况下,CentOS 7下的服务在崩溃或退出后,无法自动重新启动,这时就需要一个监控程序。

其实如果是systemctl启动的服务,其本身就自带监控功能,只是大部分时候默认没有使用。

修改启用其监控功能也很简单。

比如当前这个网站,mariadb服务时不时地就退出了,每次都要连接到服务器后台去启动。

只需要修改/usr/lib/systemd/system/mariadb.service文件,
在[Service]节中添加Restart=always,
之后执行systemctl daemon-reload使配置生效。
验证配置是否有效,可以使用kill命令杀死进程,看其是否重启。

mariadb.service文件的位置可以通过systemctl cat mariadb得到:

在CentOS的7.5版本中,mariadb.service文件并不是永久存储在系统上的,
而是在系统启动的时候生成的,如:

这是一个临时文件,即使对它进行了修改,系统重启或者执行systemctl daemon-reload后也会重置。
systemctl set-property 命令对Restart选项目前不生效,不支持对Restart属性的修改。

不过可以通过以下方式解决:
执行systemctl edit mysql命令,调用文本编辑器修改指定的单元或单元实例。
该命令会在/etc/systemd/system/mysql.service.d/目录下生成一个名为override.conf的文件。
在该文件中添加以下内容:

并保存退出。

之后执行systemctl daemon-reload使配置生效。
验证配置是否有效,可以使用kill命令杀死进程,看其是否重启。
通过systemctl cat mysql命令可以看到,该文件会使mysql.service文件在生成时,
在文件的最后添加override.conf文件中的内容:

需要注意的是,RemainAfterExit=no这一行是必须的,否则修改不生效。

更多systemctl的用法可以参考:
www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html

————————————————————

原创文章,转载请注明: 转载自孙希栋的博客

本文链接地址: 《CentOS 7配置使某服务在崩溃或退出后自动启动》

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Scroll Up