The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Скрипт для восстановления процессов..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Разговоры, обсуждение новостей (Public)
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Скрипт для восстановления процессов..."  +/
Сообщение от auto_tips on 03-Сен-05, 23:39 
Иногда случается, что при сбое (например при большой нагрузке или при временном отсутствии
каналов связи) важные демоны самостоятельно завершают свою работу.
Например может случаться вот такая ошибка
    squid[703]: Exiting due to repeated, frequent failures
Такое же может иногда случаться с IPA (/usr/ports/sysutils/ipa) и Apache.

Чтобы автоматизировать отслеживание таких процессов можно создать
`crontab -e` задание (на примере Squid)

   5,35 * * * * /usr/local/etc/rc.d/checksquid


./checksquid:

   proc="squid"

   PIDFILE=/var/run/${proc}.pid
   if [ -f $PIDFILE ] ; then
        PID=`head $PIDFILE`
        if [ "x$PID" != "x" ] && kill -0 $PID 2>/dev/null ; then
            RUNNING=1
        else
            RUNNING=0
        fi
   else
        RUNNING=0
   fi

   if [ $RUNNING -eq 0 ]; then
        echo "Starting $proc again..."
        /usr/local/etc/rc.d/${proc}.sh start
        continue
   else
        echo "$proc already running"
   fi

Нужно только убедиться что нужные PID файлы хранятся в /var/run.
Директивы pid_filename в squid.conf, PidFile в httpd.conf


URL:
Обсуждается: https://www.opennet.ru/tips/info/889.shtml

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Скрипт для восстановления процессов на случай сбоя"  +/
Сообщение от Berserker on 03-Сен-05, 23:39 
А как же daemontools?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Скрипт для восстановления процессов на случай сбоя"  +/
Сообщение от Av (??) on 04-Сен-05, 11:35 
Как правило у любого демона есть опция запуска foreground:

#!/bin/sh
echo $$ > /var/run/`basename $0`.pid
while true; do
       {путь к демону} -D
done

это гораздо надежнее - мгновенно восстанавливается при любом завершении, запускать скрипт с &. Убить kill `cat /var/run/...`

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Скрипт для восстановления процессов на случай сбоя"  +/
Сообщение от HFSC email(??) on 04-Сен-05, 17:23 
Зачем плодить процессы (особенно через while true :) ), если есть супервизоры (xinetd,daemontools,monit и тд), специально для этого предназначенные.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Скрипт для восстановления процессов на случай сбоя"  +/
Сообщение от Av (??) on 05-Сен-05, 09:22 
Эти процессы висят - пить есть не просят, время процессорное не тратять - зато живучесть нужных демонов максимальная
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "pianerskie padelija fftopku"  +/
Сообщение от McLone on 04-Сен-05, 18:16 
http://smarden.org/runit/
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Скрипт для восстановления процессов на случай сбоя"  +/
Сообщение от Павел email(??) on 05-Сен-05, 07:08 
бывают случаи, когда демон отвалится, а pid остаётся.

Предлагаю по крону запускать следующее:

#!/bin/sh

num=`ps ax|grep /usr/bin/daemon|wc -l`

if [ $num -lt 2 ]; then
    /usr/local/bin/start.daemon
fi


Проверку количества процессов поставить по вкусу.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Скрипт для восстановления процессов на случай сбоя"  +/
Сообщение от Yurik (??) on 05-Сен-05, 10:45 
> бывают случаи, когда демон отвалится,
> а pid остаётся.
именно это и проверяет kill -0 $PID 2>/dev/null
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Скрипт для восстановления процессов на случай сбоя"  +/
Сообщение от s2 email(ok) on 05-Сен-05, 13:10 
так проще!
#!bin/sh
ps ax |grep squid |grep -v grep
if expr $? = 1
then
echo "Squid Starting"
squid
else
echo "Squid Alredy started"
fi
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Скрипт для восстановления процессов на случай сбоя"  +/
Сообщение от Zulu on 05-Сен-05, 16:45 
Ой посмешил...
1) а следить?
2) А нарваться на шелл-скрипт с именем "blah-squid-blah"?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Скрипт для восстановления процессов на случай сбоя"  +/
Сообщение от test email(??) on 05-Сен-05, 23:33 
эээ... а для сквида RunCache уже не решает?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Скрипт для восстановления процессов на случай сбоя"  +/
Сообщение от Аноним email on 08-Сен-05, 10:09 
#!/bin/bash

sleep 2
(/sbin/pidof squid || /usr/sbin/squid)>/dev/null 2>&1
$0 &

exit

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Скрипт для восстановления процессов на случай сбоя"  +/
Сообщение от Аноним on 01-Мрт-07, 14:56 
Спасибо, хороший скрипт.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Скрипт для восстановления процессов на случай сбоя"  +/
Сообщение от Denis email(??) on 07-Окт-09, 13:33 
Как то у Вас тут все просто - раз два и сквид работает, а не учли двух деталей: 1)squid.pid имеет защиту - файл с подписью #!bin/sh запускается без прав root'а и поэтому прочитать pid-файл не может, но есть решение использовать sudo, но тогда pid просто выводится на экран и никак в переменную не хочет записываться, в статье переменная указана, как PIDFILE - я вот не могу сообразить, как бы все таки присвоить переменной значение pid; 2) второе, что Вы не учли, что как раз таки демон может еще работать - сидеть в памяти, но через ps не выводится и pid-файл у него пуст или его вовсе нет и при попытке перезапуска (restart, reload или rotate) ругается, мол squid: error: copy no running - и здесь есть решение - последовательно выполнить: /etc/init.d/squid stop (останов демона, который спрятался где то в памяти), /etc/init.d/squid zap (что то вроде отладки), squid -z (пересоздание кеша), и только потом /etc/init.d/squid start. в некоторых случаях можно еще добавочно делать перед перекешированием killall -9 squid и chown -R squid:squid /var/log/squid на случай все ж наличия pid-файла и отсутствия прав у сквида на запись собственных логов
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "Скрипт для восстановления процессов на случай сбоя"  +/
Сообщение от Denis email(??) on 07-Окт-09, 13:58 
забыл сказать, что для получения номера pid процесса в скрипте с #!bin/sh используется строка: sudo sh -c 'cat /var/run/squid/squid.pid' или sh -c 'cat /var/run/squid/squid.pid'
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "Скрипт для восстановления процессов на случай сбоя"  +/
Сообщение от cat (??) on 28-Окт-09, 08:07 
А у меня вылезла такая ошибка cannot open /var/run/shutdown.pid. И не могу найти как поправить
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру