Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Автоматический перезапуск сервиса в случае падения  (Прочитано 450 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ert

  • Автор темы
  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Столкнулся с ситуацией, когда периодически останавливается сервис zoneminder (zmc -m 4 exited abnormaly, exit status 255 и подобные)
Пока не было времени разбираться с причинами, а система должна быть в рабочем состоянии, решил просто проверять статус сервиса, и если он неактивен, перезапускать его.

Проверить статус сервиса можно:
systemctl is-active zoneminderв результате получим:
active или inactive
Нам нужно как-то эти значения обрабатывать.
На помощь придет test

В общем виде это выглядит вот так:
test "$(systemctl is-active zoneminder)" = "inactive"; echo $?если сервис inactive, мы получим в результате 0, то есть true
если active - получим 1 (false)

Теперь научим наш сервер делать это каждую минуту и перезапускать сервис, если он inactive

откроем файл /etc/crontab и вставим туда следующую строку:
*/1 * * * * root test "$(systemctl is-active zoneminder)" = "inactive" && service zoneminder restart



Оффлайн ALiEN175

  • Старожил
  • *
  • Сообщений: 2386
  • 20% Cooler
    • Просмотр профиля
Restart=alwaysотменили?  :2funny:
ASUS M5A78L-M LX3 :: AMD FX-4330 :: 16 GB RAM
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM

Оффлайн ert

  • Автор темы
  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Спасибо, действительно так проще.
Не могли бы Вы описать процесс настройки подробнее?

Оффлайн ALiEN175

  • Старожил
  • *
  • Сообщений: 2386
  • 20% Cooler
    • Просмотр профиля
sudo systemctl edit zoneminder
Пишем
[Service]
Restart=always
Сохраняем, закрываем


UPD: забыл про секцию [Service] и убрал две ненужные команды (edit автоматически перезапустит юнит, когда вы закончите редактирование)
« Последнее редактирование: 25 Январь 2019, 15:37:09 от ALiEN175 »
ASUS M5A78L-M LX3 :: AMD FX-4330 :: 16 GB RAM
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM

Оффлайн ert

  • Автор темы
  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Проверил, сервис остается в inactive

Оффлайн ALiEN175

  • Старожил
  • *
  • Сообщений: 2386
  • 20% Cooler
    • Просмотр профиля
а так:
[Service]
Restart=
Restart=always

Пользователь добавил сообщение 25 Январь 2019, 15:47:58:
И покажите еще
systemctl cat zoneminder
« Последнее редактирование: 25 Январь 2019, 15:47:58 от ALiEN175 »
ASUS M5A78L-M LX3 :: AMD FX-4330 :: 16 GB RAM
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM

Оффлайн ert

  • Автор темы
  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
it@mowsub49:~$ systemctl cat zoneminder
# /lib/systemd/system/zoneminder.service
# ZoneMinder systemd unit file
# This file is intended to work with Debian distributions

[Unit]
Description=ZoneMinder CCTV recording and surveillance system
After=network.target mysql.service
# Remarked out so that it will start ZM on machines that don't have mysql instal
#Requires=mysql.service

[Service]
#User=www-data
Type=forking
ExecStart=/usr/bin/zmpkg.pl start
ExecReload=/usr/bin/zmpkg.pl restart
ExecStop=/usr/bin/zmpkg.pl stop
PIDFile=/var/run/zm/zm.pid
Restart=always
Environment=TZ=:/etc/localtime

[Install]
WantedBy=multi-user.target

# /etc/systemd/system/zoneminder.service.d/override.conf
[Service]
Restart=
Restart=always

Оффлайн ALiEN175

  • Старожил
  • *
  • Сообщений: 2386
  • 20% Cooler
    • Просмотр профиля
убирайте) он по-умолчанию always.
sudo rm /etc/systemd/system/zoneminder.service.d/override.conf
Надо логи смотреть, что не так и почему не перезапускается.
journalctl -b0 -u zoneminderВывод может быть большой, спрятьче под спойлер.
ASUS M5A78L-M LX3 :: AMD FX-4330 :: 16 GB RAM
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM

Оффлайн ert

  • Автор темы
  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Он был по-умолчанию "on-abnormal". Always уже я ему поставил

Может быть он не перезапускается, т.к. я останавливаю его вручную?
(Нажмите, чтобы показать/скрыть)
Все не поместилось
« Последнее редактирование: 25 Январь 2019, 16:54:48 от ert »

Оффлайн ALiEN175

  • Старожил
  • *
  • Сообщений: 2386
  • 20% Cooler
    • Просмотр профиля
если вручную - конечно остановится.
Подловите момент, когда сервис сам остановится и сразу смотрите в логи.

PS. Тк. Restart=always установлен, то сервис останавливается после нескольких неудачных попыток его запуска подряд (не помню, сколько по-умолчанию).

Почитайте, можно найти много полезного
« Последнее редактирование: 25 Январь 2019, 17:05:16 от ALiEN175 »
ASUS M5A78L-M LX3 :: AMD FX-4330 :: 16 GB RAM
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM

Оффлайн ert

  • Автор темы
  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Спасибо!

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

 

Страница сгенерирована за 0.066 секунд. Запросов: 24.