URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 1753
[ Назад ]

Исходное сообщение
"как следить чтобы процесс не упал?"

Отправлено 22 , 26-Ноя-04 02:02 
сабж по крону и чтобы если упал то поднимался снова (ну там апач, мускул)? если в списке процессов нет то поднимать снова?

Содержание

Сообщения в этом обсуждении
"как следить чтобы процесс не упал?"
Отправлено shadow , 26-Ноя-04 09:43 
была софтина тут в программах посмотри
или в портах сервис монитор точно не помню
она как раз этим занималась
она отслеживала что работает что нет
если нет то пишет лог что сервис упал и после выполняет его перезапуск
или мона пойти другим способом
там по ps socstat или чем еще все зависит от фантазии
сомтреть есть ли процесс если да но молчим если нет то
перезапуск
думаю что на shell можно накатать мин за 10


"как следить чтобы процесс не упал?"
Отправлено dravor , 26-Ноя-04 10:29 
открываем daemontools и читаем, читаем

"как следить чтобы процесс не упал?"
Отправлено 22 , 26-Ноя-04 13:26 
>открываем daemontools и читаем, читаем

а что обязательно чтото стороннее инсталлить? неужели нет возможности накатать скрипт или чтото такое внутренними средствами? Помню в eggdrop-боте для ирк-сетей была такая штука как проверять по крону каждые (сколько задашь) есть ли процесс в списке (насколько помню там был просто шелл-скрипт). Если нет процесса то поднимать.


"как следить чтобы процесс не упал?"
Отправлено dravor , 26-Ноя-04 14:05 
Можешь сам хоть новый апач написать. Только, ИМХО, грамотный специалист - этот тот, кто пишет и ОТЛАЖИВАЕТ срипты, когда нужного инструмента у него нет.


"как следить чтобы процесс не упал?"
Отправлено Mark , 26-Ноя-04 16:06 
>>открываем daemontools и читаем, читаем
>
>а что обязательно чтото стороннее инсталлить? неужели нет возможности накатать скрипт или
>чтото такое внутренними средствами? Помню в eggdrop-боте для ирк-сетей была такая
>штука как проверять по крону каждые (сколько задашь) есть ли процесс
>в списке (насколько помню там был просто шелл-скрипт). Если нет процесса
>то поднимать.
можно, я например писал скрипт который проверяет на наличие файла *.pid  данного процесс(apache,mysql) при отсуцтвии такого запустить
возможно есть средства и по лучше но на скорую руку, болле простого и надежного я не придумал



"как следить чтобы процесс не упал?"
Отправлено 22 , 26-Ноя-04 21:48 
а кодом скрипта не поделишься?


"как следить чтобы процесс не упал?"
Отправлено madtroll , 30-Ноя-04 23:34 
>а кодом скрипта не поделишься?


Я под линукс написал скрипт под названием 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"
fi

if [ "x$CHECK" = "x0" ]; then
w
printf  "\n*** HDD free space\n";
df -h | grep -w /
fi

alive /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
fi

if [ "x$CHECK" = "x0" ]; then
printf  "\n*** /usr/local/sbin/ulogd\n";
ps axw | grep ulogd

printf "\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 отдельно.


"как следить чтобы процесс не упал?"
Отправлено 22 , 01-Дек-04 13:42 
Спасибо за очень нужную в хозяйстве вещь!