Уважаемые гости и пользователи форума!
Чтобы видеть ссылки на форуме - надо зарегистрироваться и иметь 1 пост на форуме. Для этого есть КУРИЛКА и там тема Здрасти.

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

Заметки для администратора сервера.

Модераторы: rewuxiin, kulia

Правила форума
Условием использования нашего форума, является соблюдение настоящих Правил форума.

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам, а вы рискуете получить предупреждение.
Аватара пользователя
SinglWolf
Контактная информация:
Откуда: Башкирия
Сообщения: 2618
Зарегистрирован: 23 янв 2012, 22:11

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

16 мар 2014, 22:23

Создадим файл test_service.sh с таким содержимым:

Код: Выделить всё

#!/usr/bin/env bash

# функция вызова проверки и перезапуска служб сервера
check_srv()
{
	s1=$1
	/usr/bin/pgrep $s1 &>/dev/null

	s2=$?
	if [ $s2 -ne 0 ]; then
		if [ X"$s1" == X"mysqld" ]; then
		s1='mysql'
	fi
		service $s1 restart &>/dev/null
		echo "---------------------------------------------------------------"  >> /root/service_up.log
		echo "Служба $s1 был перезапущена в `date`"  >> /root/service_up.log
		echo -e "---------------------------------------------------------------\n"  >> /root/service_up.log
	fi
};

# "Проверяем apache2"
check_srv apache2

# "Проверяем MySQL"
check_srv mysqld
Скрипт проверяет работоспособность сервисов, и в случае их падения инициирует перезапуск и запишет об этом в файле /root/service_up.log.

Код: Выделить всё

-------------------------------------------------------
Служба apache2 был перезапущена в Вск Мар 16 22:16:44 YEKT 2014
-------------------------------------------------------

-------------------------------------------------------
Служба mysql был перезапущена в Вск Мар 16 22:16:47 YEKT 2014
-------------------------------------------------------
Даем скрипту права на выполнение:

Код: Выделить всё

# chmod +x test_service.sh
Теперь поставим скрипт на автоматическое выполнение в cron.
Для этого, в файле /etc/crontab

Код: Выделить всё

# crontab -e
в конец добавим строку:

Код: Выделить всё

*/5 * * * * /file_catalog/test_service.sh
где file_catalog — каталог, в котором находится файл test_service.sh
и сохраним файл.

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

Вернуться в «Администратору на заметку»