Linux перезапуск сервиса по расписанию

Содержание
  1. Как выполнить автоматический перезапуск сервиса Linux
  2. Часто происходит спонтанное падение сервиса. Пользователю приходится заниматься их ручным восстановлением. Проблемы как таковой нет, если это происходит на домашнем компьютере. Даже больше – это хорошо, ведь появляется реальная возможность определить состояние сервиса, выявить неисправности и устранить их. Но совсем другая ситуация, когда дело касается серверов и VPS сервисов, которые должны работать постоянно для обеспечения доступа к веб-сайту или приложению. В этой статье рассмотрим способ настройки автоматического перезапуска сервиса Linux несколькими способами: с помощью скрипта мониторинга периодически запускаемого через cron и в systemd.
  3. Автоматический перезапуск в Systemd
  4. Автоматический перезапуск скриптом
  5. Автоматический перезапуск сервиса Linux
  6. Автоматический перезапуск сервиса в systemd
  7. Автоматический перезапуск сервиса с помощью скрипта
  8. unixforum.org
  9. перезагрузка по расписанию
  10. перезагрузка по расписанию
  11. Re: перезагрузка по расписанию
  12. Re: перезагрузка по расписанию
  13. Re: перезагрузка по расписанию
  14. Re: перезагрузка по расписанию
  15. Re: перезагрузка по расписанию
  16. Re: перезагрузка по расписанию
  17. Автоматический перезапуск сервиса Linux
  18. Автоматический перезапуск сервиса через deamontools
  19. Автоматический перезапуск сервиса с помощью скрипта
  20. Как я могу запланировать перезагрузку в Linux?

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

Читайте также:  Asus x553ma установка windows

ps -A | grep apache2 || systemctl start apache2

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

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

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

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

Источник

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

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

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

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

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

sudo systemctl edit apache2

[Service]
Restart=on-failure
RestartSec=5s

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

sudo systemctl daemon-reload

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

sudo systemctl status apache2
kill -KILL 32091

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

sudo systemctl edit apache2

[Service]
StartLimitIntervalSec=500
StartLimitBurst=5
Restart=on-failure
RestartSec=5s

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

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

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

sudo vi /usr/local/bin/apache-monitor.sh

#!/bin/bash
ps -A | grep apache2 || systemctl start apache2

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

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

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

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

Источник

unixforum.org

Форум для пользователей UNIX-подобных систем

  • Темы без ответов
  • Активные темы
  • Поиск
  • Статус форума
Читайте также:  Internal error 2203 c windows installer

перезагрузка по расписанию

Модератор: SLEDopit

перезагрузка по расписанию

Сообщение andrsyash » 09.03.2006 10:49

Подскажите пожалуйста, уважаемые спецы, можно ли выполнять перезагрузку по расписанию (cron)

Re: перезагрузка по расписанию

Подскажите пожалуйста, уважаемые спецы, можно ли выполнять перезагрузку по расписанию (cron)

Re: перезагрузка по расписанию

Сообщение rolano » 09.03.2006 11:19

Re: перезагрузка по расписанию

Сообщение andrsyash » 09.03.2006 12:11

Re: перезагрузка по расписанию

Сообщение shark3D » 09.03.2006 15:15

Re: перезагрузка по расписанию

Сообщение grub » 10.03.2006 16:05

Подскажите пожалуйста, уважаемые спецы, можно ли выполнять перезагрузку по расписанию (cron)

сначала говоришь crontab -e
потом в открывшемся редакторе пишешь что-то вроде:
10 13 * * * reboot

это значит что в 10 минут 13 часов любого дня любого месяца каждой недели будет выполняться команда reboot

Re: перезагрузка по расписанию

Сообщение vg2.0 » 10.03.2006 16:21

chmod 755 reboot

2. правим /var/cron/tab/root
там 5 полей:
m — минуты
h — часы
dm — день месяца
m — месяц
dw — день недели
данее идет путь до файла

Ну еще можно перезапустить cron, хотя это не обязательно
cd /etc/rc.d
./cron restart

Источник

Автоматический перезапуск сервиса 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

Читайте также:  Msxml msi для windows

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

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

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

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

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

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

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

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

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

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

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

Источник

Как я могу запланировать перезагрузку в Linux?

Я новичок в Linux и хочу запланировать перезагрузку в полночь. как мне это сделать?

Редактирование:

Извините, я не поставил полную информацию. Я хочу перезагрузить каждую третью субботу месяца в 23:30.

Я не знаю, что не так, но я не могу найти crontab. Что у меня есть cron.d ; cron.daily ; cron.weekly ; cron.monthly ;

Я извиняюсь за вопрос нуба. Пожалуйста, помогите мне. Спасибо.

Типа shutdown -r 0:00 и он перезагрузится в полночь.

Если вы хотите перезагружаться каждую ночь, добавьте запись cron, используя crontab -e в качестве пользователя root, чтобы запускать shutdown -r каждую полночь

Добавление этой записи в / etc / crontab должно сделать:

Другой вариант — команда at , доступная во многих дистрибутивах Linux. Смотрите man-страницу для получения дополнительной информации, но общий синтаксис для вашей цели:

эхо «перезагрузка» | в 00:00 27 июня

Цитировать справочную страницу OS X:

atвыполняет команды в указанное время

Звучит так, как мы говорим. 😉

Насколько я знаю, вы не можете использовать cron для планирования задач на «последнюю пятницу каждого месяца» или «третий четверг каждого месяца». Что вы можете сделать, каким бы уродливым это ни казалось, — запускать каждую субботу в 23:30 сценарий, а затем этот сценарий определять, является ли данная суббота третьей субботой недели (это можно сделать с помощью команд date и, возможно, cal). ,

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

1) в командной строке введите 2) как только вы узнаете, где находится перезагрузка (обычно / sbin / reboot), перейдите в один из каталогов в /etc/cron.daily, /etc/cron.weekly, / etc / cron. почасово и т. д. which reboot
cd /etc/cron.weekly

3) создайте файл (используя nano или vim), назовите его zzreboot и добавьте следующие строки:

#! / bin / sh
/ sbin / reboot

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

Источник

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