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

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

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

Курс по 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Программные межсетевые экраны windows

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Полезно?

Почему?

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

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

Источник

Автоматический перезапуск сервиса 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 запускается такой командой, но у вас может быть по другому. После сохранения сделайте скрипт исполняемым:

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

Читайте также:  Перезагрузка ноута при установке windows

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

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

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

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

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

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

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

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

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

Источник

Как перезапускать программу ?

Каким образом в Linux правильно реализовать перезапуск программы после вылета по ошибке ? В ДОС я бы написал bat: :loop programm goto loop

А как грамотно это сделать в Linux ?

Как перезапускать программу ?

Аналог того, что выше — while :; do program; done

Как перезапускать программу ?

while true; do program; done;

Как перезапускать программу ?

for ((;;)); do program; done

Как перезапускать программу ?

until false;do program;done

Как перезапускать программу ?

Правильнее всего вот так:
(defun forever ()
(progn
(run-shell-command «твоя программа»)
(forever)))
(forever)

Как перезапускать программу ?

yes | xargs -n1 proga

Re: Как перезапускать программу ?

>yes | xargs -n1 proga
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory

Не слушай советчиков, с defun получается оптимальнее.

Как перезапускать программу ?

> ls: cannot access y: No such file or directory

но она же запускается!

> ls: cannot access y: No such file or directory
> ls: cannot access y: No such file or directory

Источник

Скрипт на автоматический рестарт процесса, несколько вопросов

У меня на убунтовском сервере поднят игровой сервер, в гайдах к которому советуют перезагружать его каждые 4-5 часов.

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

Запускаю сервер в screen:

screen -S game -d -m ./launch_game_server.sh

Сам скрипт: restart.sh

Первый вопрос: правильно ли написан данный скрипт?

Второй вопрос: читал что не советуют убивать процессы kill -9, вроде как остаются какие-то дочерние процессы, которые все равно нагружают систему и если это так, как убить процесс по нормальному?

Третий вопрос: имеет ли смысл ребутать сам сервер (Ubuntu) для профилактики?

1. Нет, неправильно: kill -9 | grep game_server

2. Обычно принятно сначала отправлять SIGTERM, только потом SIGKILL. Дочернии процессы могут остаться всегда, нужно смотреть есть ли он вобще у этого сервера и как их можно идентифицировать — по пользователю, по группе процессов, по имени.

3. Ребутать сам сервер смысла не вижу.

Сделай скрипт в /etc/init.d и добавь в крон service restart. Выясни, нет ли у сервера штатной возможности перезагрузки/отключения (команда, например).

Читайте также:  Как обновиться до windows 10 10586

для сервисов, которые не имеют в комплекте нормального инит скрипта, я юзаю runit + простенький скрипт. Далее управление идет командой sv(8). Если что-то надо периодически перезапускать, то добавь в начало команду timeout. Она убъёт процесс, а sv его сам перезапустит.

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

Обычно принятно сначала отправлять SIGTERM

а если SIGTERM не будет успешен, kill завершится с сигналом возврата 1 или 0?

C кодом заверния 1. И выведет на stderr одну из трёх ошибок (см man 2 kill). Но, успешное выполнение kill это просто передача сигнала процессу, а уж завершится процесс или проигнорирует SIGTERM это другое дело.

а уж завершится процесс или проигнорирует SIGTERM это другое дело.

вот как раз это и интересовало

Всё плохо. Используй supervisord или подобное (когда-то были ещё daemontools и т.д.)

Источник

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

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

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

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

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

Дальше, чтобы проверить все ли работает исправно, посмотрите состояние процесса, завершите процесс сигналом 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 для периодического запуска скрипта:

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

Источник

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