LINUX.ORG.RU
ФорумAdmin

Скрипт перезагрузки mysqld и httpd если упали

 , ,


0

3

ЛОР, здравствуй. Учусь админить вот. Не работает скрипт из сабжа. Система CentOS 6.5 (final) Скрипт вот

#!/bin/bash

#APACHE SECTION
RESTART="/etc/init.d/apache2 restart"
PGREP="/usr/bin/pgrep"
HTTPD="apache"
$PGREP ${HTTPD}
if [ $? -ne 0]; then
        $RESTART
        echo "[$(date)] [Restarted Apache]" >> /home/admin/log-dbrestarter.txt
fi

#MYSQL SECTION
RESTARTM="/etc/init.d/mysql restart"
MYSQLD="mysqld"
$PGREP ${MYSQLD}
if [ $? -ne 0 ]; then
        $RESTART
        $RESTARTM
        echo "[$(date)] [Restarted MySQL with Apache]" >> /home/admin/log-dbres$
fi

в крон скрипт прописан на ежеминутку и исполняется, а сервер бд всё равно упал и лежал не двигаясь.

У меня перезапуск wvdial при его падении так осуществлён

while true; do wvdial & wait $!; sleep 10; done
может поможет

Allakka ★★★★
()

[code=bash]

а сервер бд всё равно упал и лежал не двигаясь.

Так мож случилось чего?

В дебиане есть service.И твой скрипт может выглядеть так

#!/bin/bash
for srv in apache2 mysql
do
  service $srv status || service $srv start
done

ziemin ★★
()

Сервис MySQL - mysqld. Ты вообще скрипт читал? Или ты увидел ошибку, не стал разбираться и запостил на ЛОР? Кстати, где текст ошибки? Нам тут делать больше нефиг, как в телепатов играть? Кто тебя админить пустил, если ты такой элементарный скрипт не смог прочитать? Ты даже не удосужился пути до файлов проверить.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)
Ответ на: комментарий от Black_Shadow

Изменил

RESTART="/etc/init.d/apache2 restart"
HTTPD="apache"
на
RESTART="service httpd restart"
HTTPD="httpd"

Смотрю жалуется на 8ую строчку

if [ $? -ne 0]; then
/home/admin/dbmonitor.sh: line 8: [: missing `]'
19073
19532
Условие, если честно, даже не знаю как работают - не я писал. Каюсь.

Saionji
() автор топика
Ответ на: комментарий от Saionji

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

Так ты учишься или копипастишь?

alpha ★★★★★
()
Ответ на: комментарий от Saionji

Сначала понимается, как работает, потом, при необходимости, пишется код, а не копипастится никогда. Точнее, копипастить можно, но потом, когда ты сможешь понять копипасту. А то тебе так rm -rf /* сделают.

Black_Shadow ★★★★★
()
#!/bin/bash
if pgrep httpd >/dev/null 2>&1
  then
     echo "ok"
  else
     service httpd start
fi

Либо юзай monit. Либо не страдай херней, если сервисы упали - значит какая-то ошибка и они не стартанут.

tazhate ★★★★★
()
Ответ на: комментарий от Black_Shadow

Если честно PHP. Со знанием частичного синтаксиса Си. Ладно, другая песня. Спасибо ЛОР, такой ошибки у меня ещё не было.

Saionji
() автор топика

У тебя что часто апач или мускуль падают? Может лучше с причиной разобраться, а не костыли городить?

Работоспособность сервиса лучше проверять не по наличию процессов (они могут тупо повиснуть), а по его работоспособности. Например запрашивать curl-ом какую-то страницу и проверять её содержимое.
С мускулем то-же самое, подключаешься консольным клиентом (лучше использовать для этого отдельного бесправного mysql-пользователя) и выполняешь какой-нибудь тупой запрос вроде select NOW() (хотя лучше дёргать рабочие базы данных, только чем-то не слишком тяжёлым).

Что-бы посмотреть что делает bash-скрипт (и понять почему он не делает то чего ты от него ожидаешь) запусти его в режиме отладки, например так bash -x /path/to/my/megascript.sh

MrClon ★★★★★
()
Ответ на: комментарий от Saionji

Плохо учили. Будешь и дальше таких учителей слушать, получишь индийское гражданство вне очереди.

MrClon ★★★★★
()
Ответ на: комментарий от Saionji

Так а шаг с «понимается как работает» ты зачем пропустил?

Не разобрался как работают условия в bash - это нормально, никто не разбирается, ну так вырежи из скрипта кусочек в три строчки и повозись с ним. Можно Bash Beginners Guide открыть на примеры посмотреть. Найти отличия.

Не просто же копипастить до упора пока не заработает.

alpha ★★★★★
()
Ответ на: комментарий от tazhate

БД настроена норм. Проверял тюнером. VDS слабенький, а скрипт php жирный. Пока получу увеличение нужно продержаться. На моните с рывками cpu 1%-20%-75% и RAM с почти постоянной забитостью в 98% monit будет только рестартится. За совет спасибо

Saionji
() автор топика
Ответ на: комментарий от Saionji

monit будет только рестартится

Что за бред? Это настраивается.

tazhate ★★★★★
()
Ответ на: комментарий от Saionji

Inetd вроде-бы
В bsd само подняло, после kill -i $FTP_PID, ftp сервер

ubuntuawp ★★
()
Ответ на: комментарий от ubuntuawp

Конечно, systemd - это же ненадежное bloatware. То ли дело скопипащенные с убунту-форумов недоделанные баш-скрипты, которые никто не читал. while true; sleep; никогда не подведет

alpha ★★★★★
()
Ответ на: комментарий от kernelpanic

Да-да, во всём убунта виновата. И память она всю выжрала, и мозги ТСа зохавала, и колодец она отравила, и коней ворует (:

MrClon ★★★★★
()
Ответ на: комментарий от alpha

Ты больной? Какие скрипты? Upstart пользуется conf файлами с описанием демона, командой и всякими параметрами
Для сетевых демонов, которые нельзя держать упавшими придумали inetd, который

ubuntuawp ★★
()
Ответ на: комментарий от MrClon

Именно. Только ты с мозгами ошибся - нечего хаватать, не выросли еще.

А то, что mysqld в центоси запускается через mysqld_safe никто почему-то не вспомнил

kernelpanic ★★★★★
()

а сервер бд всё равно упал и лежал не двигаясь.

ну, это лучше, чем если бы скрипт раз в минуту mysqld рестартил :)

Bers666 ★★★★★
()
Ответ на: комментарий от vxzvxz

а вот фиг.
1. если PIDFILE существует, то не стартанет
2. если забиты семафоры (ipcs/iprm), то не стартанет тоже.

Bers666 ★★★★★
()
Ответ на: комментарий от Bers666

да мне как-то положить стартанет он или нет, весь его скрипт сводится к одной строчке, а он городит огород на пустом месте.

vxzvxz ★★★
()

Если они у вас падают, то вас надо уволить.

В нормальном состоянии оба эти демона должны работать бесконечно с 0 вмешательством.

thespiritofbirdie
()
Ответ на: комментарий от thespiritofbirdie

В нормальном состоянии оба эти демона должны работать бесконечно с 0 вмешательством.

админ локалхоста?

Bers666 ★★★★★
()

в крон скрипт прописан на ежеминутку и исполняется, а сервер бд всё равно упал и лежал не двигаясь.

а кто тебе сказал, что процесс mysqld обязан завершиться? Он и зависнуть может.

emulek
()
Ответ на: комментарий от Saionji

для начала изучи ЯП, напиши пару программ в 50 строк.

Если ты этого не сделаешь, то станешь потешным клоуном.

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.