сабж по крону и чтобы если упал то поднимался снова (ну там апач, мускул)? если в списке процессов нет то поднимать снова?
была софтина тут в программах посмотри
или в портах сервис монитор точно не помню
она как раз этим занималась
она отслеживала что работает что нет
если нет то пишет лог что сервис упал и после выполняет его перезапуск
или мона пойти другим способом
там по ps socstat или чем еще все зависит от фантазии
сомтреть есть ли процесс если да но молчим если нет то
перезапуск
думаю что на shell можно накатать мин за 10
открываем daemontools и читаем, читаем
>открываем daemontools и читаем, читаема что обязательно чтото стороннее инсталлить? неужели нет возможности накатать скрипт или чтото такое внутренними средствами? Помню в eggdrop-боте для ирк-сетей была такая штука как проверять по крону каждые (сколько задашь) есть ли процесс в списке (насколько помню там был просто шелл-скрипт). Если нет процесса то поднимать.
Можешь сам хоть новый апач написать. Только, ИМХО, грамотный специалист - этот тот, кто пишет и ОТЛАЖИВАЕТ срипты, когда нужного инструмента у него нет.
>>открываем daemontools и читаем, читаем
>
>а что обязательно чтото стороннее инсталлить? неужели нет возможности накатать скрипт или
>чтото такое внутренними средствами? Помню в eggdrop-боте для ирк-сетей была такая
>штука как проверять по крону каждые (сколько задашь) есть ли процесс
>в списке (насколько помню там был просто шелл-скрипт). Если нет процесса
>то поднимать.
можно, я например писал скрипт который проверяет на наличие файла *.pid данного процесс(apache,mysql) при отсуцтвии такого запустить
возможно есть средства и по лучше но на скорую руку, болле простого и надежного я не придумал
а кодом скрипта не поделишься?
>а кодом скрипта не поделишься?
Я под линукс написал скрипт под названием demons, который вызываю из cron с периодичностью в 5 минут для мониторинга необходимых демонов.Вот собственно скрипт:
#!/bin/bash
#
# Автор: MAD TROLL
# Дата: 01/01/2004
# Назначение: Скрипт для проверки/запуска необходимых демонов
# Использование: demons [check]
# Примечание: Без аргумента скрипт просто показывает состояниеLOG=/var/log/demons.log
# функция проверки работы демонов
alive () {
SCRIPT=$1
if [ -z $2 ]; then ARGUMENT="status"
else ARGUMENT=$2
fi
printf "\n*** $SCRIPT\n";
$SCRIPT $ARGUMENT
if [ "x$CHECK" = "x1" ]; then
let STATUS="`$SCRIPT $ARGUMENT | grep -c выполняется`"
if [ "x$STATUS" = "x0" ]; then
$SCRIPT restart
if [ "x$?" = "x0" ]; then RETVAL="UP"
else RETVAL="UP FAILED"
fi
echo `date +%d`'/'`date +%m`'/'`date +%Y`' '`date +%H`':'`date +%M`'.'`date +%S` $SCRIPT $RETVAL >> $LOG
fi
fi
return
}# отсюда пошло тело скрипта
if [ -z $1 ]; then CHECK="0"
else CHECK="1"
fiif [ "x$CHECK" = "x0" ]; then
w
printf "\n*** HDD free space\n";
df -h | grep -w /
fialive /etc/init.d/named mystatus # добавил свою функцию контроля статуса
alive /etc/init.d/sshd
alive /etc/init.d/pptpd
alive /etc/init.d/sendmail
alive /etc/init.d/httpd
alive /etc/init.d/mysqld
alive /etc/init.d/radiusd
alive /etc/init.d/squid
alive /etc/init.d/ichatsrvd
alive /etc/init.d/smb
[ `ifconfig | grep -c gre1` -ne 0 ] && {
alive /etc/init.d/globax
[ "x$CHECK" = "x1" ] && /usr/local/scripts/globax-check
}
if [ "x$CHECK" = "x0" ]; then ps axw | grep pptpd
fiif [ "x$CHECK" = "x0" ]; then
printf "\n*** /usr/local/sbin/ulogd\n";
ps axw | grep ulogdprintf "\n ";
ps -ux | awk '{if ($3 > 20) {print "*** Съели процессорное время: ***\nProcess \t\t" "PID" "\t" "CPU" "\n" $11 "\t" $2 "\t" $3 "\n"}}'printf "";
ps -ux | awk '{if ($4 > 20) {print "*** Съели память: *** \nProcess \t\t" "PID" "\t" "MEM" "\n" $11 "\t" $2 "\t" $4 "\n"}}'
printf "\n";
fi#конец скрипта
--------------
1)Скрипт не претендует на совершенность и любые замечания и предложения будут приветствоваться.
2)Существующие недостатки: так например скрипт пока не справляется с ситуацией "подвисания" mysql, т.е. ситуации, когда с точки зрения контроля процессов все ок, но сама СУБД неходится в состоянии "штопора" и не может обслуживать БД... это есть грустно, но универсального подхода нет, по этому буду дорабатывать контроль юзабельности баз данных mysql отдельно.
Спасибо за очень нужную в хозяйстве вещь!