zaLinux.ru

Как сделать так, чтобы служба systemd перезапускалась в случае сбоя (РЕШЕНО)


Как сделать так, чтобы служба со статусом failed (неудачный запуск) перезапускалась автоматически?

По умолчанию службы помечаются как failed (не удалось) в случае пяти последовательных неудачных запусков в течение десяти секунд.

cat /etc/systemd/system.conf | grep StartLimit
#DefaultStartLimitIntervalSec=10s
#DefaultStartLimitBurst=5

Но это поведение можно изменить. Понятно, что его можно изменить в указанном конфигурационном файле /etc/systemd/system.conf, но особого смысла делать этого для всех служб нет — если служба не запускается, то почти наверняка требуется вмешательство системного администратора для исправления причин проблемы.

Но для некоторых служб или некоторых ситуаций это может быть полезным. Далее показан пример, как настроить бесконечный перезапуск службы с именем honeycreeper.

Создайте drop-in каталог конфигурации и установите в нём следующие параметры для перезапуска службы (в данном примере honeycreeper). Мы устанавливаем время перезапуска на каждые десять секунд в случае сбоя — время не должно быть слишком маленьким, иначе это приведёт к бесконечным частым попыткам перезапуска с соответствующей нагрузкой на центральный процессор.


sudo mkdir -p /etc/systemd/system/honeycreeper.service.d
cat <<EOF | sudo tee /etc/systemd/system/honeycreeper.service.d/restart.conf
[Unit]
StartLimitIntervalSec=0
[Service]
Restart=always
RestartSec=10
EOF

sudo systemctl daemon-reload

В случае вылета, служба будет перезапускаться бесконечно.

Посмотрим статус настроенной службы:

sudo systemctl status honeycreeper

В выводимой информации видно, что применяется конфигурационный файл Drop-In (restart.conf), служба не помечена как failed, последний раз она перезапускалась 6 секунд назад.

● honeycreeper.service - honeycreeper
     Loaded: loaded (/etc/systemd/system/honeycreeper.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/honeycreeper.service.d
             └─restart.conf
     Active: activating (auto-restart) (Result: exit-code) since Sun 2020-08-23 19:19:37 CEST; 6s ago
       Docs: man:honeycreeper(1)
             file:/usr/share/doc/honeycreeper/configuration.txt.gz
    Process: 614105 ExecStartPre=/usr/sbin/honeycreeper -f $CONFIG -c -q $EXTRAOPTS (code=exited, status=1/FAILURE)

Попробуем посмотреть службы со статусом failed:

sudo systemctl --failed

Таких служб нет:

  UNIT LOAD ACTIVE SUB DESCRIPTION
0 loaded units listed.
Tags

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


Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *