宕机时如何使用 Systemd 重启服务? [关闭]

Posted

技术标签:

【中文标题】宕机时如何使用 Systemd 重启服务? [关闭]【英文标题】:How to use Systemd to restart a service when down? [closed] 【发布时间】:2015-05-11 21:37:47 【问题描述】:

在我的服务器上,我使用 elasticSearch,它经常出现故障,结果对我的用户来说是 500 错误。我了解 Systemd 现在是管理服务的参考。

当我的弹性搜索服务宕机时,如何使用 Systemd 自动重启它?我找到了重新启动它的方法,但不是自动重新启动,无需我检查它是否已关闭。

【问题讨论】:

【参考方案1】:

如果您使用 systemd 服务文件来启动服务,则将以下行添加到您启动服务的服务文件中:

[Service]
Type=simple
ExecStart=here will be your service executable name
Restart=always
RestartSec=0

Restart=

配置当服务进程退出、被杀死或达到超时时是否应该重新启动服务。采用以下值之一:noon-successon-failureon-abnormalon-watchdogon-abortalways。如果设置为no(默认)。

RestartSec=

配置重启服务前的休眠时间(与Restart= 配置的一样)。以秒为单位取一个无单位的值。

这两个选项必须在服务文件中的[Service] 标记下。

【讨论】:

您能否详细说明从头开始时如何执行此操作?使用 apt-get install system-sysv 给我一个“包 'systemd-sysv' 没有安装候选” 从头开始——没看懂... Linux 自带一个系统框架组件,叫做systemD。一旦 systemD 启动,内核就会启动它,它会在设备启动时启动所有服务。 SystemD 是 System V init 的替代品。 systemD 在您的 linux 平台上是否可用。如果是,那么这只是服务文件中的几行更改即可使其正常工作。 很好,我可以做到这一点。我需要从 linux 14.04 切换到 14.10,然后大多数有用的服务已经在 /run/systemd/generator.late 下拥有它们的单元文件【参考方案2】:

我为此使用了monit monit。 A post at askfedoraproject 向我建议,这仍然是监控进程并自动重启它们的好方法。

它提供了监控功能的精细配置、如何确定进程是否发生故障以及为恢复它而采取的措施。

【讨论】:

【参考方案3】:

Systemctl - linux 系统的系统和服务管理器

关于 systemd 的基础知识: 特征: 1.开机时并行启动系统服务 2.按需激活守护进程 3.基于依赖的服务控制逻辑

* limited support at runlevel
* panic is not support panic command(systemctl no custom commands)
* systemctl can only communicate with services which are started by systemd
* sysd stop only running services
* system services don't inherit any context like HOME or PATH variable
* All services subject to default timeout of 5 minutes can be configured.These prevents from system to freeze in case of some application stop to respond.

系统单元:服务、路径、挂载、快照、交换、计时器、设备等 单位类型 文件扩展名 描述 服务单位 。服务 一个系统服务。 目标单位 。目标 一组 systemd 单元。 自动安装单元 .automount 文件系统自动挂载点。 装置单元 。设备 内核识别的设备文件。 安装单元 。山 文件系统挂载点。 路径单元 。小路 文件系统中的文件或目录。 范围单位 。范围 外部创建的进程。 切片单元 。片 一组管理系统进程的分层组织单元。 快照单元 .snapshot systemd 管理器的保存状态。 插座单元 。插座 进程间通信套接字。 交换单位 。交换 交换设备或交换文件。 定时器单元 .timer 一个 systemd 计时器。

单元文件的文件位置:/etc/systemd/system

配置文件:/etc/systemd/system.conf

Systemd提供了很多功能,基本上你可以控制linux系统的所有资源,给你提供了很多功能。我们在这篇文章中重点管理系统服务。

更多详情:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/chap-managing_services_with_systemd

管理系统服务: 系统控制 描述 systemctl start name.service 启动服务。 systemctl 停止名称.服务 停止服务。 systemctl restart name.service 重新启动服务。 systemctl try-restart name.service 仅当服务正在运行时才重新启动它。 systemctl 重新加载 name.service 重新加载配置。 systemctl status name.service systemctl is-active name.service 检查服务是否正在运行。 systemctl list-units --type service --all 显示所有服务的状态。 系统控制 描述 systemctl enable name.service 启用服务。 systemctl 禁用 name.service 禁用服务。 systemctl status name.service systemctl 已启用 name.service 检查是否启用了服务。 systemctl list-unit-files --type 服务 列出所有服务并检查它们是否已启用。 systemctl list-dependencies --after 列出在指定单元之前按顺序启动的服务。 systemctl list-dependencies --before 列出在指定单元之后按顺序启动的服务。

【讨论】:

以上是关于宕机时如何使用 Systemd 重启服务? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

数据仓库宕机时的登录行为

网速慢或服务器宕机时如何处理 Alamofire 请求?

为啥centos7的service命令无法启动服务

linux启动流程systemd关闭服务的三个层次

ejabberd集群,当master宕机时,Slave不起作用

RocketMQ集群部署