Автоматический перезапуск службы linux

Содержание
  1. Автоматический перезапуск сервиса Linux
  2. Автоматический перезапуск сервиса через deamontools
  3. Автоматический перезапуск сервиса с помощью скрипта
  4. Как автоматически перезапускать службы при сбое?
  5. Автоматический перезапуск MySQL, PHP-FPM, Nginx, если они падают
  6. Автоматический перезапуск WebSphere DMGR, Nodeagent, JVM
  7. Как выполнить автоматический перезапуск сервиса Linux
  8. Часто происходит спонтанное падение сервиса. Пользователю приходится заниматься их ручным восстановлением. Проблемы как таковой нет, если это происходит на домашнем компьютере. Даже больше – это хорошо, ведь появляется реальная возможность определить состояние сервиса, выявить неисправности и устранить их. Но совсем другая ситуация, когда дело касается серверов и VPS сервисов, которые должны работать постоянно для обеспечения доступа к веб-сайту или приложению. В этой статье рассмотрим способ настройки автоматического перезапуска сервиса Linux несколькими способами: с помощью скрипта мониторинга периодически запускаемого через cron и в systemd.
  9. Автоматический перезапуск в Systemd
  10. Автоматический перезапуск скриптом
  11. ИТ База знаний
  12. Полезно
  13. Навигация
  14. Серверные решения
  15. Телефония
  16. Корпоративные сети
  17. Как запустить, остановить и перезапустить сервисы в Linux
  18. Базовый синтаксис команды systemctl
  19. Как проверить, работает ли служба в Linux
  20. Как перезапустить сервис
  21. Как перезагрузить конфигурационные файлы сервиса
  22. Как запустить сервис
  23. Как остановить сервис
  24. Как включить сервис при загрузке
  25. Как отключить сервис при загрузке
  26. Полезно?
  27. Почему?
  28. Как автоматически перезапустить службу при сбое в Linux
  29. 4 ответа

Автоматический перезапуск сервиса Linux

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

В этой инструкции я покажу как настроить автоматический перезапуск сервиса в Linux несколькими способами: с помощью скрипта мониторинга периодически запускаемого через cron и набора утилит для управления демонами daemontools. Пожалуй начнем с последнего.

Автоматический перезапуск сервиса через deamontools

Daemontools — это набор утилит для управления и мониторинга состояния сервисов в Linux. Основной важной для нас особенностью Daemontools есть возможность автоматически перезапускать сервисы при их падении. Также Daemontools поддерживает ротацию логов, но об этом уже не в этой статье.

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

Для установки в Ubuntu, Debian, Linux Mint выполните:

Для Fedora и RHEL команда установки будет выглядеть следующим образом:

Пользователи ArchLinux могут найти соответствующий пакет в AUR.

Теперь необходимо добавить daemontools в автозагрузку. Сделать это можно добавив следующую команду в конец rc.local:

Программа svscanboot запускает и контролирует другие утилиты для управления демонами, если хотите более подробную информацию смотрите на опеннете.

Для управления демонами в Linux Deamontools создает папку /service, все сервисы описанные в этой папке автоматически запускаются при запуске daemontools. Каждый демон должен иметь свой подкаталог и в нем скрипт запуска с названием run.

Теперь рассмотрим создание скриптов для daemontools. Они ничем не отличаются от обычных скриптов linux. Рассмотрим все на примере запуска и мониторинга сервиса apache.

Сначала создайте подкаталог в папке /service:

Теперь создайте сам скрипт запуска:

/usr/sbin/apache2 -D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D PHP5 -d /usr/lib64/apache2 -f /etc/apache2/httpd.conf -k start

У меня Apache запускается такой командой, но у вас может быть по другому. После сохранения сделайте скрипт исполняемым:

Читайте также:  Как отключить заставку при включении компьютера windows 10

Далее нужно перезагрузить систему, и можно проверять работоспособность. Найдем список процессов сервиса с помощью ps:

Уничтожим все утилитой kill:

Опять смотрим список процессов и видим что все на месте:

Автоматический перезапуск сервиса с помощью скрипта

Это самый простой и самый надежный способ работающий абсолютно во всех дистрибутивах linux и не требующий установки дополнительных утилит. Для того же Apache скрипт выглядит следующим образом:

ps -A | grep apache || /etc/init.d/apache start

Сохраните файл, сделайте его исполняемым:

Теперь добавьте запись в cron для периодического запуска скрипта:

Осталось перезапустить cron:

На этом все, желаю долгих аптаймов вашим Linux серверам и пусть ваши сервисы никогда не падают.

Источник

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

Скрипт shell для перезапуска служб, если сервис падает или сбой

Обычно процесс разбивается / падает по различным причинам, что позволяет исследовать и исправлять проблемы, но это может занять некоторое время.

Тем не менее, одна вещь, которую вы можете сделать немедленно, чтобы сократить время простоя для лучшей доступности, – автоматизировать перезапуск процесса, если он не работает.

Давайте сделаем это через скрипты freeway – shell

Вы можете использовать следующие сценарии оболочки для запуска через crontab, который будет проверять службы каждые 15 минут (вы можете отрегулировать интервал времени) и запустится, если не будет найден. Звучит круто?

В этой статье я расскажу о двух примерах запуска служб, если они работают.

Автоматический перезапуск MySQL, PHP-FPM, Nginx, если они падают

Создайте файл с помощью редакторов vi в нужном месте (в этой демонстрации я поставлю его под /opt/startifdown.sh)

Скопируйте и вставьте со сценарий в файл и сохраните его

Измените разрешение файла на выполнение

Проверьте его вручную, чтобы убедиться, что скрипт выполняем.

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

Как только вы удебитесь, вы можете поместить это в cron для запуска каждые 15 минут.

Автоматический перезапуск WebSphere DMGR, Nodeagent, JVM

Создайте файл со следующими скриптами – назову его startwasifdown.sh

Примечание. Измените путь в соответствии с вашей средой

Измените разрешение файла на выполнение

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

Источник

Как выполнить автоматический перезапуск сервиса Linux

Часто происходит спонтанное падение сервиса. Пользователю приходится заниматься их ручным восстановлением. Проблемы как таковой нет, если это происходит на домашнем компьютере. Даже больше – это хорошо, ведь появляется реальная возможность определить состояние сервиса, выявить неисправности и устранить их. Но совсем другая ситуация, когда дело касается серверов и VPS сервисов, которые должны работать постоянно для обеспечения доступа к веб-сайту или приложению. В этой статье рассмотрим способ настройки автоматического перезапуска сервиса Linux несколькими способами: с помощью скрипта мониторинга периодически запускаемого через cron и в systemd.

Автоматический перезапуск в Systemd

По умолчанию выставлено, что в случае падения сервиса Systemd ничего с ним не будет делать. Но пользователь всегда может выстроить настройки таким образом, чтобы в случае падения или остановки сервис автоматически перезапускался. Для этого используется директива Restart, которую надо добавить в секцию Service. Дальше рассмотрим пример настройки автоматического перезапуска сервиса Apache:

Здесь RestartSec указывает, сколько ждать перед перезапуском сервиса. Когда завершите работу, сохраните изменения и выполните команду daemon-reload, чтобы перечитать конфигурацию:

Читайте также:  Windows api timer function

Дальше, чтобы проверить все ли работает исправно, посмотрите состояние процесса, завершите процесс сигналом kill:

$ sudo systemctl status apache2

Еще раз посмотрите состояние, процесс должен быть запущен. Для установки запуска инициализации каждый раз, используйте специальную директиву Restart: always. Но пользоваться ею необходимо крайне осторожно, ведь она не позволит завершить процесс, даже если в этом возникнет необходимость. Если процесс постоянно падает, чтобы он перезапускался, можно добавить лимит на количество перезапусков в секцию Service:

Здесь StartLimitBurst и StartLimitIntervalSec указывают на важность перезапуска сервиса пять раз, и если он все эти пять раз упадёт, то оставить его и не трогать. Вторая директива ограничивает время перезапусков сервиса до 500 секунд.

Автоматический перезапуск скриптом

Пожалуй, самый надежный и безотказный способ, работающий во всех версиях Linux. В том же Apache легко выстроить автоматический перезапуск при помощи скрипта. Для этого необходимо ввести команду:

ps -A | grep apache2 || systemctl start apache2

Файл нужно сохранить и обязательно сделать его исполняемым:

chmod ugo+x /usr/local/bin/apache-monitor.sh

Не забудьте добавить запись в cron для периодического запуска скрипта:

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

Источник

ИТ База знаний

Курс по Asterisk

Полезно

— Узнать IP — адрес компьютера в интернете

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Калькулятор инсталляции IP — АТС Asterisk

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Как запустить, остановить и перезапустить сервисы в Linux

Start — Stop — Restart — Reload

3 минуты чтения

Linux обеспечивает детальный контроль над системными службами через systemd с помощью команды systemctl. Службы могут быть включены, выключены, перезапущены, перезагружены или даже включены или отключены при загрузке. Если вы используете Debian, CentOSили Ubuntu, ваша система, вероятно, использует systemd.

Мини — курс по виртуализации

Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена

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

Базовый синтаксис команды systemctl

Основной синтаксис для использования команды systemctl:

Как правило, вам нужно запускать это как суперпользователь поэтому команды будут начинаться с sudo.

Как проверить, работает ли служба в Linux

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

Замените SERVICE_NAME на нужный сервис.

В нашем случае мы будем брать за пример веб-сервер Apache.

Интересный факт: в Ubuntu и других дистрибутивах на основе Debian служба Apache называется apache2. В CentOS и других дистрибутивах RedHat служба Apache называется httpd или httpd.service

Так мы проверили состояние Apache. Выходные данные показывают, что служба активна (работает), как на рисунке ниже:

Как перезапустить сервис

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

Где SERVICE_NAME — имя вашего сервиса.

После выполнения команды ваш сервис должен снова заработать. Вы можете проверить состояние с помощью команды status

Читайте также:  Печать linux клиент windows сервер

Для перезапуска нашего сервера Apache используем:

Как перезагрузить конфигурационные файлы сервиса

Чтобы служба перезагрузила свои файлы конфигурации, введите в терминале следующую команду:

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

В нашем примере мы перезагрузили Apache, используя:

Как запустить сервис

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

Например, команда для запуска службы Apache:

Как остановить сервис

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

Для нашего апача используем команду

Проверьте, остановился ли сервис с помощью команды status . Вывод должен показать, что сервис неактивен — inactive (dead)

Как включить сервис при загрузке

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

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

Как отключить сервис при загрузке

Вы можете запретить запуск службы при загрузке с помощью команды:

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Полезно?

Почему?

😪 Мы тщательно прорабатываем каждый фидбек и отвечаем по итогам анализа. Напишите, пожалуйста, как мы сможем улучшить эту статью.

😍 Полезные IT – статьи от экспертов раз в неделю у вас в почте. Укажите свою дату рождения и мы не забудем поздравить вас.

Источник

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

В Windows вы можете установить, что должно произойти, если /при сбое службы. Есть ли стандартный способ достижения того же самого в Linux (в частности, CentOS)?

Большая часть моего вопроса: как вы обрабатываете сокеты, которые были оставлены открытыми — например, в TIME_WAIT, FIN_WAIT1 и т. д..

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

Спасибо за вашу помощь.

4 ответа

monit — отличный способ отслеживать и перезапускать службы, когда они терпят неудачу — и вы, вероятно, в конечном итоге используете это для других основные сервисы (такие как Apache). Существует хорошая статья о nixCraft , в которой подробно описывается как использовать это для служб, особенно, если monit имеет гораздо больше функций, кроме этого.

Что касается аспекта сокета, @galraen ответил на это место.

Вы можете вызвать setsockopt(2) для прослушивания сокета с помощью SO_REUSEADDR , так что вы сможете снова bind(2) , не дожидаясь истечения срока действия всех подключений. Другая возможность: удалить соединения из ядра. У FreeBSD есть команда tcpdrop , не знаю о Linux.

Только ответ на часть перезапуска службы. Я тоже натолкнулся на Монита, но на CentOS 7 systemd позаботится обо всем этом. Вам просто нужно добавить эти две строки в файл .service (если их еще нет):

Если вы хотите создать собственную службу systemd, довольно просто написать собственный файл службы. См. Пример ниже для настраиваемого HTTP-сервера.

Запустите редактор с новым служебным файлом:

И добавьте следующий контент, который вы можете редактировать по мере необходимости:

Я хочу, чтобы он запускался автоматически при загрузке:

Сообщите systemd об изменениях и запустите службу:

И теперь вы можете увидеть статус:

Если ваш дистрибутив linux использует Upstart вместо SysV init, тогда это ключевое слово respawn .

Источник

Оцените статью