Назад | Перейти на главную страницу

Systemd не перезапускает службу, хотя Restart = всегда

Вот мой юнит-файл службы systemd:

[Unit]
Description=Tunnel For %i
After=network.target

[Service]
User=autossh
ExecStart=/usr/bin/autossh -M 0 -N -o "ExitOnForwardFailure yes" -o "ConnectTimeout=1" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 40443:installserver:40443 -R 8080:installserver:8080 tunnel@%i
Restart=always

[Install]
WantedBy=multi-user.target

Модуль вышел из строя 15 дней назад, и systemd не перезапустил его, хотя «Restart = always» находится в вышеуказанном файле модуля.

Вот вывод статуса этой службы:

salt:/srv # systemctl status autossh@eins-work
autossh@eins-work.service - Tunnel For eins-work
      Loaded: loaded (/etc/systemd/system/autossh@.service; enabled)
      Active: failed (Result: start-limit) since Wed, 2016-02-10 14:33:34 CET; 2 weeks and 1 days ago
    Main PID: 17980 (code=exited, status=0/SUCCESS)
      CGroup: name=systemd:/system/autossh@.service/eins-work

Feb 10 14:33:34 salt systemd[1]: Stopping Tunnel For eins-work...
Feb 10 14:33:34 salt systemd[1]: Starting Tunnel For eins-work...
Feb 10 14:33:34 salt systemd[1]: Failed to start Tunnel For eins-work.
Feb 10 14:33:34 salt systemd[1]: Unit autossh@eins-work.service entered failed state

Связанный: https://serverfault.com/a/563401/90324

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

Службе не удавалось запускаться слишком много раз подряд, поэтому systemd оставил попытки. Это то, что Result: start-limit средства.

Обратите внимание, что блоки, настроенные для Restart= и которые достигли начального лимита, больше не предпринимаются попытки перезапуска; тем не менее, они могут быть перезапущены вручную позже, и с этого момента логика перезапуска снова активируется. Обратите внимание, что systemctl reset-failed вызовет сброс счетчика скорости перезапуска для службы, что полезно, если администратор хочет запустить устройство вручную, и лимит запуска мешает этому.

Вы должны решить проблему, из-за которой служба не запускается.

Если вам нужно настроить, сколько раз и как быстро systemd пытается перезапустить отказавшую службу, см. в StartLimitInterval=, StartLimitBurst= и StartLimitAction= параметры.