Как использовать Systemd для перезапуска службы, когда не работает?

На моем сервере я использую эластичный поиск, который регулярно отключается, и в результате для моих пользователей возникает ошибка 500. Я понимаю, что Systemd теперь является справочной системой для управления службами.

Как я могу использовать Systemd для автоматического перезапуска службы эластичного поиска, когда она выходит из строя? Я нашел способы перезапустить его, но не автоматически, не проверив, выключен ли он.

Ответ 1

Если вы используете файл службы systemd для запуска службы, добавьте ниже строки в файл службы, откуда вы запускаете службу

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

    Определяет, будет ли служба перезапущена, когда процесс службы завершается, завершается или по истечении времени ожидания. Принимает одно из следующих значений: no, on-success, on-failure, on-abnormal, on-watchdog, on-abort или always. Если установлено значение no (по умолчанию).

  • RestartSec=

    Настраивает время ожидания перед перезапуском службы (в соответствии с Restart=). Принимает значение без единиц измерения в секундах.

Эти две опции должны находиться под тегом [Service] в служебном файле.

Ответ 2

Я использовал monit monit для этого. Сообщение в askfedoraproject подсказывает мне, что это все еще хороший способ контролировать процессы и автоматически перезапускать их.

Он обеспечивает хорошую детализацию функций мониторинга, как решить, завершился ли процесс, и действия, которые необходимо предпринять для его восстановления.

Ответ 3

Systemctl - диспетчер систем и служб для Linux-систем

Основы systemd: Особенности: 1. Параллельный запуск системной службы во время загрузки 2. Требование активации демонов Логика управления сервисом 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.

Единицы системы: сервис, путь, монтирование, моментальный снимок, своп, таймер, устройство и т.д. Тип устройства Расширение файла Описание Сервисный блок .оказание услуг Системное обслуживание. Целевая единица .TARGET Группа системных единиц. Автонастройка .automount Автономная точка файловой системы. Устройство устройства .device Файл устройства, распознаваемый ядром. Монтажный блок .mount Точка монтирования файловой системы. Блок пути .дорожка Файл или каталог в файловой системе. Единица измерения .объем Внешне созданный процесс. Единица среза .кусочек Группа иерархически организованных подразделений, которые управляют системными процессами. Блок моментальных снимков .snapshot Сохраненное состояние диспетчера systemd. Розетка .разъем Межпроцессный коммуникационный разъем. Обменный блок .замена Сменное устройство или файл подкачки. Таймер .timer Системный таймер.

файл файла Filelocation:/etc/systemd/system

Файл conf:/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 Описание systemctl start name.service Запуск службы. systemctl stop name.service Остановка службы. systemctl restart name.service Перезапуск службы. systemctl try-restart name.service Перезапускает службу только в том случае, если она запущена. systemctl reload name.service Перезагружает конфигурацию. Статус systemctl status.service systemctl is-active name.service Проверяет, работает ли служба. systemctl list-units --type service --все Отображает статус всех служб. systemctl Описание systemctl enable name.service Включает службу. systemctl отключить name.service Отключает службу. Статус systemctl status.service systemctl с поддержкой name.service Проверяет, включена ли служба. systemctl list-unit-files --type service Перечисляет все службы и проверки, если они включены. системные списки-зависимости - после Перечисляет службы, которые заказываются для запуска до указанного устройства. systemctl-список-зависимостей - до Перечисляет службы, которые заказываются для запуска после указанного устройства.