如何在宕机时使用 Systemd 重启服务?

How to use Systemd to restart a service when down?

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

如何使用 Systemd 在弹性搜索服务出现故障时自动重启它?我找到了重新启动它的方法,但没有我检查它是否已关闭就不会自动启动。

我用过 monit monit for this. A post at askfedoraproject 向我建议,这仍然是监视进程并自动重启它们的好方法。

它提供了监控功能的精细配置、如何确定进程是否失败以及要采取的恢复操作。

如果您使用 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] 标签下。

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

systemd 基础知识: 特征: 1.Parallel开机时启动系统服务 2.On 要求激活守护进程 3.Dependecy 基于服务控制逻辑

* 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 文件系统自动挂载点。 设备单位 。设备 内核识别的设备文件。 安装单元 。山 文件系统挂载点。 路径单元 。小路 文件系统中的文件或目录。 范围单位 。范围 外部创建的进程。 切片单元 。片 一组按层次结构组织的单元,用于管理系统进程。 快照单元 .快照 systemd 管理器的保存状态。 插座单元 。插座 一个 inter-process 通信套接字。 交换单位 。交换 交换设备或交换文件。 定时器单元 .定时器 系统定时器。

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

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

Systemd 提供了很多功能,基本上您可以控制 linux 系统的所有资源,这给了您很多 functionality.We 本文重点介绍管理系统服务。

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

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