Иногда из-за нестабильности работы MySQL по тем или иным причинам, работа сайта может подвергаться опасности. Это неприятно сказывается на посещаемости, индексации поисковыми система и доставляет неудобство посетителям. Постоянно отслеживать работу сервиса вручную — задача трудоемкая и даже невыполнимая. Если такое происходит с вашим сервером может помочь автоматическая проверка и рестарт MySQL и Apache.
Создадим файл dbmonitor.sh с таким содержимым:
#!/bin/bash
# APACHE SECTION
RESTART="/etc/init.d/apache2 restart"
PGREP="/usr/bin/pgrep"
HTTPD="apache"
$PGREP ${HTTPD}
if [ $? -ne 0 ]; then
$RESTART
fi
# MYSQL SECTION
RESTARTM="/etc/init.d/mysql restart"
MYSQLD="mysqld"
$PGREP ${MYSQLD}
if [ $? -ne 0 ]; then
$RESTART
$RESTARTM
fi
Скрипт проверяет работоспособность сервисов, и в случае их падения инициирует перезапуск.
Даем скрипту права на выполнение:
chmod +x dbmonitor.sh
Теперь поставим скрипт на автоматическое выполнение в cron. Для этого, в файле /etc/crontab
nano /etc/crontab
в конец добавим строку:
*/1 * * * * /bin/sh /file_catalog/dbmonitor.sh
где file_catalog — каталог, в котором находится файл dbmonitor.sh
и сохраним файл.
Теперь каждую минуту на сервере будет запускаться скрипт, проверять работу сервисов, и автоматически их перезапускать при необходимости.
Конечно, решение не самое лучшее, и при любых неполадках лучше разобраться в их причине и наладить бесперебойную работу. Но во многих случаях такой подход может оказаться очень полезным.
Что бы узнать полный путь от корня, используем:
pwd
Подсмотрено на сайте: http://ablex.ru. Спасибо!