Логотип

Как автоматически перезапустить вышедшую из строя службу в Linux

Как автоматически перезапустить вышедшую из строя службу в Linux

В системе Linux сервисы (также называемые демонами) играют важнейшую роль в выполнении различных задач, таких как веб-хостинг, управление базами данных и работа в сети. Однако иногда сервисы могут давать сбой или останавливаться из-за ошибок, высокой нагрузки на ресурсы или непредвиденных системных сбоев.

Чтобы предотвратить простои и обеспечить бесперебойную работу, системные администраторы могут настроить автоматический перезапуск служб в случае сбоя, что особенно полезно для веб-серверов (ApacheNginx), баз данных (MySQLPostgreSQL) или других критически важных приложений, которые должны быть доступны в любое время.

В этой статье мы объясним, как использовать systemd, чтобы настроить автоматический перезапуск службы Linux в случае её остановки.

 

Зачем перезапускать Службу автоматически?

Есть несколько причин, по которым вам может понадобиться автоматически перезапускать службу в Linux:

  • Минимизируйте время простоя: если служба неожиданно останавливается, автоматический перезапуск гарантирует, что пользователи столкнутся с минимальными перебоями в работе.
  • Повысьте надёжность: такие службы, как веб-серверы, базы данных и фоновые процессы, должны работать постоянно.
  • Сократите объём ручной работы: без автоматизации вам придётся часто проверять службы и перезапускать их вручную в случае сбоя.
  • Обработка непредвиденных сбоев: если служба выходит из строя из-за программных ошибок, нехватки ресурсов или системных ошибок, systemd может перезапустить её без вмешательства администратора.
Читать  Systemd 258 удаляет cgroup v1, повышает базовую версию ядра до 5.4

 

Теперь давайте рассмотрим шаги по настройке автоматического перезапуска с помощью systemd.

 

Шаг 1: Определите службу, которую вы хотите перезапустить

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

systemctl list-units --type=service --state=running

 

Если вы уже знаете название службы, вы можете проверить ее состояние.

systemctl status apache2

 

Замените apache2 фактическим именем службы, которым вы хотите управлять.

 

Шаг 2: Отредактируйте конфигурацию службы

Systemd позволяет изменять поведение служб с помощью пользовательских файлов конфигурации. Вместо изменения общесистемных настроек (которые могут быть перезаписаны во время обновлений) мы будем использовать systemctl edit для создания файла переопределения.

Выполните следующую команду:

systemctl edit apache2

 

Это откроет пустой файл в вашем текстовом редакторе по умолчанию.

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

 

Шаг 3: Добавьте конфигурацию перезапуска Systemd

В редакторе добавьте следующие строки.

[Service]
Restart=always
RestartSec=5s

 

Объяснение этих настроек:

  • Restart=always — Обеспечивает перезапуск службы при её остановке, независимо от причины.
  • RestartSec=5s — Указывает systemd подождать 5 секунд перед перезапуском службы, что может предотвратить быстрый перезапуск в случае повторяющихся сбоев.

 

После добавления сохраните и закройте файл.

Читать  Как отключить службу в Ubuntu?

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

sudo systemctl daemon-reload
sudo systemctl restart apache2

 

Чтобы подтвердить, что служба теперь настроена на автоматический перезапуск, запустите:

sudo systemctl show apache2 | grep Restart

 

Если все настроено правильно, вы должны увидеть:

Restart=always

 

Шаг 4: Протестируйте автоматический перезапуск в Linux

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

sudo systemctl stop apache2

 

Подождите 5 секунд, затем проверьте его состояние.

sudo systemctl status apache2

 

Если служба запущена снова, автоматический перезапуск работает!

 

Дополнительные Параметры перезапуска

В зависимости от ваших потребностей systemd предоставляет различные политики перезапуска:

  • Restart=always – Служба всегда перезапускается, даже если она была остановлена вручную.
  • Restart=on-failure — Перезапускается только в случае сбоя службы (но не в случае остановки вручную).
  • Restart=on-abnormal — Перезапускает службу, если она выходит из строя из-за сигнала (например, ошибки сегментации).
  • Restart=on-watchdog – Перезапустите службу, если во время ее работы истекло время ожидания.

 

Вы можете заменить Restart=always любым из этих вариантов в зависимости от ваших требований.

 

Как проверить журналы обслуживания на наличие проблем

Если служба продолжает работать с ошибками, рекомендуется проверить журналы с помощью команды journalctl, которая отобразит журналы службы за последние 10 минут.

journalctl -u apache2 --since "10 minutes ago"

 

Читать  Что такое Apt Systemd Daily?

Для потока журналов в реальном времени используйте:

journalctl -u apache2 -f
Заключение

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

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:
5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала