如何配置 Linux 服务在崩溃或重启后自动启动 – 第二部分:参考

这篇具有很好参考价值的文章主要介绍了如何配置 Linux 服务在崩溃或重启后自动启动 – 第二部分:参考。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者选择了自由开源基金会作为 Write for Donations 计划的捐赠对象。

介绍

在本教程中,您将使用 systemd 配置 MySQL,在重启或崩溃后自动重新启动。

这是一个两部分系列的第二部分。第一部分涵盖了一般的 Linux 服务管理概念,如 init 守护进程和运行级别。它以 systemd 中的服务管理演示结束。在这里,您将研究 targetswantsrequiresunit 文件。第二部分提供了使用 MySQL 数据库的实际示例。

先决条件

要完成本教程,您需要:

  • 运行 CentOS 8 的服务器,包括一个具有 sudo 特权的非根用户。要设置所有这些内容,包括防火墙,您可以创建一个运行 CentOS 8 的 DigitalOcean Droplet,然后按照我们的初始服务器设置指南进行操作。

  • 已安装 MySQL。有关详细说明,请参阅我们的教程《在 CentOS 8 上安装 MySQL》。

使用 systemd 配置 MySQL 在启动后自动启动

安装 MySQL 后,检查服务的状态:

sudo systemctl status mysqld.service

输出应显示服务正在运行,但守护进程已禁用:

...

如果服务已启用,请禁用它。我们希望在进行更改之前先探索禁用的行为:

sudo systemctl disable mysqld.service

接下来,运行此命令检查 MySQL 是否被 multi-user.target 所需:

sudo systemctl show --property "Wants" multi-user.target | fmt -10 | grep mysql

不会返回任何内容。现在检查符号链接是否存在:

sudo ls -l /etc/systemd/system/multi-user.target.wants/mysql*

会出现一个消息,指出符号链接文件不存在:

...

现在,如果愿意,重新启动服务器并检查 MySQL 服务。它应该在运行。

无论您是否重新启动,现在重新启用 MySQL 服务:

sudo systemctl enable mysqld.service

这次,系统将在 /etc/systemd/system/multi-user.target.wants/ 下创建一个符号链接:

...

再次运行 ls 命令以确认:

sudo ls -l /etc/systemd/system/multi-user.target.wants/mysql*

您将收到如下输出:

...

启用或禁用 systemd 服务会在默认目标的 wants 目录中创建或删除符号链接。

如果愿意,再次重启 Droplet,当它重新上线时运行 ps -ef 命令来检查服务状态。

ps -ef | grep mysql

此命令将提供有关 MySQL 是否正在运行的信息:

...

现在,您已经配置了 MySQL 在重启后重新启动。接下来,您将考虑崩溃情况。

使用 systemd 配置 MySQL 在崩溃后自动启动

作为一款现代应用程序,MySQL 已经配置为在崩溃后自动启动。让我们看看如何禁用它。

在编辑器中打开 MySQL 服务单元文件:

sudo vi /etc/systemd/system/multi-user.target.wants/mysqld.service

在头部信息之后,文件的内容如下:

...

如您所见,Restart 参数的值被设置为 on-failure。这意味着 MySQL 服务将在不干净的退出代码或超时时重新启动。

systemd 服务的 man 页面显示了 Restart 参数的以下表格:

重启设置/退出原因 no always on-success on-failure on-abnormal on-abort on-watchdog
清洁的退出代码或信号 X X
不干净的退出代码 X X
不干净的信号 X X X X
超时 X X X
看门狗 X X X X

在 systemd 服务单元文件中,两个参数 - RestartRestartSec - 控制崩溃行为。第一个参数指定服务何时应重新启动,第二个参数定义了它在重新启动之前应等待多长时间。

为了测试崩溃行为,使用 kill -9 信号停止 MySQL 进程。在我们的情况下,主 PID 是 851;请用您自己的 PID 替换它:

ps -ef | grep mysql
sudo kill -9 851

等待几秒,然后检查状态:

sudo systemctl status mysqld.service

输出将显示 MySQL 已使用新的 PID 重新启动(在我们的情况下,新的进程 ID 是 1513):

...

接下来,重新打开单元文件:

sudo vi /etc/systemd/system/multi-user.target.wants/mysqld.service

注释掉 MySQL 守护进程单元文件中的 Restart 指令并保存。这将禁用重新启动行为:

...

之后,重新加载 systemd 守护进程,然后重新启动 mysqld 服务:

sudo systemctl daemon-reload
sudo systemctl restart mysqld.service

您可以通过运行此命令找到服务的主 PID:

sudo systemctl status mysqld.service
...
Main PID: 1895 (mysqld)

使用 kill -9 命令,在您的环境中杀死 MySQL PID 的主 PID(我们在测试环境中使用 PID)。

sudo kill -9 1895

检查 MySQL 的状态:

sudo systemctl status mysqld.service

它将显示服务已失败:

...

尝试多次查找服务状态。每次服务都将显示为 failed

因此,我们模拟了服务停止并未重新启动的崩溃情况。这是因为我们已经告诉 systemd 在不干净的停止后不要重新启动服务。如果您编辑 mysqld.service 单元文件以取消注释 Restart 参数,保存它,重新加载 systemctl 守护进程,最后重新启动服务,那将恢复正常功能。

这就是您如何配置本机 systemd 服务在崩溃后自动启动。您只需在服务单元文件的 [Service] 部分下添加额外的 Restart 指令(和可选的 RestartSec)。

结论

在这个两部分系列中,你学习了 Linux 生态系统中使用的服务管理守护程序。然后,你探索了 systemd 的基础知识,并将这些基础知识应用到了一个实际的例子中:配置数据库在重启或崩溃后重新启动。如果你希望了解更多关于 systemd 的知识,请考虑阅读我们关于使用 systemctl 的全面教程。文章来源地址https://www.toymoban.com/news/detail-854989.html

到了这里,关于如何配置 Linux 服务在崩溃或重启后自动启动 – 第二部分:参考的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux如何查看服务启动状态是否开机自动启动

    本文为joshua317原创文章,转载请注明:转载自joshua317博客 Linux如何查看服务启动状态是否开机自动启动 - joshua317的博客 linux中查看服务启动状态是否开机自动启动的方法: 1、打开linux终端; 2、在终端命令行中输入“chkconfig --list servicename”命令查看服务启动状态是否开机自动

    2023年04月09日
    浏览(53)
  • Docker服务重启后让容器自动启动 | restart参数

    问题:服务器断电之后,docker服务挂掉了,需要重启docker,但是我们重启 docker 后,容器也就停止了,不会跟随 docker 启动而启动。那么如果想在docker服务重启之后让容器自动启动,该怎么操作呢? 1.容器还没有创建,在运行容器的时候加入 –restart=always 参数 2.容器已经运行

    2024年02月10日
    浏览(49)
  • 如何停止/重启/启动Redis服务

    一、命令行直接启动/停止/重启redis 可以直接通过下面的命令启动/停止/重启redis 1、启动redis服务及验证 示例如图: 2、停止redis服务及验证 示例如图: 3、重启redis服务及验证 示例如图: 二、通过redis的相关配置信息关闭/启动redis 还可以通过redis的客户端程序redis-cli的shutdo

    2023年04月13日
    浏览(50)
  • linux服务器启动、关闭、重启命令

    关机命令: 1、halt 立刻关机 2、poweroff 立刻关机 3、shutdown -h now 立刻关机(root用户使用) 4、shutdown -h 10 10分钟后自动关机 如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启 5、init0 停机或者关机 重启命令: 1、reboot 立即重启 2、shutdown -r now 立刻重启(root用户使

    2024年02月15日
    浏览(79)
  • Ubuntu 如何启动、停止或重启服务

    在本文中,我们向您介绍在 Ubuntu 中启动、停止和重启服务的方法。 在开始之前,先获取计算机上所有服务的列表,因为我们需要知道服务名称来管理服务。 它将显示 Ubuntu 上的完整服务列表。 您可以使用 Systemd systemctl 实用程序启动、停止或重新启动服务。如过系统是 Ubu

    2024年02月10日
    浏览(38)
  • Linux下指定配置文件启动、重启、连接Redis

    指定配置文件启动 1.使用 cd 命令进入 Redis 的安装目录。 2. 执行以下命令,其中 redis.conf 是你的 Redis 配置文件的名称。 重启 重启就是关闭当前的Redis后重新启动,并不是restart 如果Redis有密码的话停止当前服务需要指定密码。 注意:此命令可能会出现一条警告 Warning: Using a

    2024年02月09日
    浏览(39)
  • Linux:将服务重启脚本加入CentO7的开机启动里

    我们的平台服务使用 docker 部署,使用 docker-compose 进行管理 平台部署到客户环境时,一小部分客户,使用自己机房或单独的服务器,并没有做断电保护,有时候这台服务器会断电重启 断电重启后,我们的平台服务要能自动拉起来,为客户正常提供服务 实现思路很简单,创建

    2024年02月11日
    浏览(43)
  • 如何一键启动、停止或重启运行在服务器内的幻兽帕鲁游戏服务进程?

    如果你是用腾讯云轻量应用服务器一键部署的幻兽帕鲁服务器,那么可以在面板一键启动、停止或重启运行在服务器内的幻兽帕鲁游戏服务进程(注意并非对服务器整机进行操作),无需手动在服务器内部运行命令。 详细教程地址:https://docs.qq.com/doc/DQnBvck1Jb2Vud2NE

    2024年04月09日
    浏览(60)
  • RTSP/Onvif视频服务器EasyNVR安防视频云服务平台出现崩溃并重启的情况解决方案

    EasyNVR安防视频云服务平台的特点是基于RTSP/Onvif协议将前端设备统一接入,在平台进行转码、直播、处理及分发,在安防监控场景中,EasyNVR可实现实时监控、云端录像、云存储、告警、级联等视频能力,极大满足行业的视频监控需求。 有用户反馈,EasyNVR在运行时,出现请求

    2024年02月11日
    浏览(59)
  • supervisor 配置自动启动服务

    一、编写服务  二、启动服务    

    2024年02月06日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包