Решил создать запись для себя как блокнот, да и надеюсь еще кому будет полезно
Когда-то столкнулся с такой проблемой что сервер падал не часто но бывало, и лежал он часами... Но проблема была наконец-то устранена, но это не относится к этой теме. Так вот после этого решил поискать/написать скрипт который бы автоматически поднимал Apache и БД MySQL т.к. бывает все же от нагрузок они тоже падают. И вот собственно что получилось:
Bash | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| #!/bin/sh
# APACHE SECTION
RESTART="/usr/local/etc/rc.d/apache24 restart"
PGREP="/usr/bin/pgrep"
HTTPD="httpd"
$PGREP ${HTTPD}
if [ $? -ne 0 ]; then
$RESTART
echo "Apache server has been successfully restarted." | mail -s "Apache24" your-mail #тут ваш email
fi
# MYSQL SECTION
RESTARTM="/usr/local/etc/rc.d/mysql-server restart"
MYSQLD="mysqld"
$PGREP ${MYSQLD}
if [ $? -ne 0 ]; then
$RESTARTM
echo "MySQL server has been successfully restarted." | mail -s "MySQL Server" your-mail #тут ваш email
fi |
|
Собственно данный скрипт проверяет pid apache и mysql, если они не равны 0 то ничего не делать, но если какой-то из pid равен 0 то выполняется рестарт и затем на почту администратору отправляется сообщение что перезагрузка была выполнена успешно, ну это так сказать для того что бы можно было по времени отследить когда был произведен рестарт и заглянуть в голи что же все таки произошло.
собственно создаем файл к примеру monitoring.sh вставляем в него скрипт который я привел выше.
Делаем файл исполняемым командой chmod +x monitoring.sh
затем добавляем задачу в cron, что бы он автоматически дергал скрипт, для этого выполняем
crontab -e
и в редакторе фала вставляем строку вида
Bash | 1
| */10 * * * * /bin/sh > /root/bin/monitoring.sh > /dev/null 2>&1 |
|
т.е. крон каждые 10 минут будет этот скрипт чекать и проверять ничего ли не лежит, что бы вновь поднять. Вам необходимо будет подправить путь к файлу /root/bin/monitoring.sh на свой где у вас хранится скрипт. Команда /dev/null 2>&1 отвечает за то что бы крон нам на почту каждые 10 минут не высылал pid процессов, они то нам не нужны, главное что они не равны 0
Вот собственно и все, надеюсь кому-то еще пригодится. |