The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Скрипт для восстановления процессов на случай сбоя
Иногда случается, что при сбое (например при большой нагрузке или при временном отсутствии 
каналов связи) важные демоны самостоятельно завершают свою работу.
Например может случаться вот такая ошибка
    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
 
03.09.2005 , Автор: Yurik
Раздел:    Корень / Программисту и web-разработчику / Shell / Готовые скрипты

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, Berserker, 23:39, 03/09/2005 [ответить] [смотреть все]
  • +/
    А как же daemontools?
     
  • 1.2, Av, 11:35, 04/09/2005 [ответить] [смотреть все]
  • +/
    Как правило у любого демона есть опция запуска foreground:

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

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

     
     
  • 2.3, HFSC, 17:23, 04/09/2005 [^] [ответить] [смотреть все]
  • +/
    Зачем плодить процессы (особенно через while true :) ), если есть супервизоры (xinetd,daemontools,monit и тд), специально для этого предназначенные.
     
     
  • 3.6, Av, 09:22, 05/09/2005 [^] [ответить] [смотреть все]
  • +/
    Эти процессы висят - пить есть не просят, время процессорное не тратять - зато живучесть нужных демонов максимальная
     
  • 1.4, McLone, 18:16, 04/09/2005 [ответить] [смотреть все]
  • +/
    http://smarden.org/runit/
     
  • 1.5, Павел, 07:08, 05/09/2005 [ответить] [смотреть все]  
  • +/
    бывают случаи, когда демон отвалится, а pid остаётся.

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

    #!/bin/sh

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

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


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

     
  • 1.7, Yurik, 10:45, 05/09/2005 [ответить] [смотреть все]  
  • +/
    > бывают случаи, когда демон отвалится,
    > а pid остаётся.
    именно это и проверяет kill -0 $PID 2>/dev/null
     
  • 1.8, s2, 13:10, 05/09/2005 [ответить] [смотреть все]  
  • +/
    так проще!
    #!bin/sh
    ps ax |grep squid |grep -v grep
    if expr $? = 1
    then
    echo "Squid Starting"
    squid
    else
    echo "Squid Alredy started"
    fi
     
     
  • 2.9, Zulu, 16:45, 05/09/2005 [^] [ответить] [смотреть все]  
  • +/
    Ой посмешил...
    1) а следить?
    2) А нарваться на шелл-скрипт с именем "blah-squid-blah"?
     
  • 1.10, test, 23:33, 05/09/2005 [ответить] [смотреть все]  
  • +/
    эээ... а для сквида RunCache уже не решает?
     
  • 1.11, Аноним, 10:09, 08/09/2005 [ответить] [смотреть все]  
  • +/
    bin bash sleep 2 sbin pidof squid 124 124 usr sbin squid dev null 2... весь текст скрыт [показать]
     
  • 1.12, Аноним, 14:56, 01/03/2007 [ответить] [смотреть все]  
  • +/
    Спасибо, хороший скрипт ... весь текст скрыт [показать]
     
  • 1.13, Denis, 13:33, 07/10/2009 [ответить] [смотреть все]  
  • +/
    Как то у Вас тут все просто - раз два и сквид работает, а не учли двух деталей ... весь текст скрыт [показать]
     
     
  • 2.14, Denis, 13:58, 07/10/2009 [^] [ответить] [смотреть все]  
  • +/
    забыл сказать, что для получения номера pid процесса в скрипте с #!bin/sh используется строка: sudo sh -c 'cat /var/run/squid/squid.pid' или sh -c 'cat /var/run/squid/squid.pid'
     
  • 1.15, cat, 08:07, 28/10/2009 [ответить] [смотреть все]  
  • +/
    А у меня вылезла такая ошибка cannot open /var/run/shutdown.pid. И не могу найти как поправить
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:

     Добавить заметку
     Версия для печати
     
     Поиск заметки:
     

    Последние заметки
    - 12.05 Организация шифрованного бэкапа с помощью rdiff-backup, encfs и Dropbox
    - 11.05 Настройка беспроводного соединения в Debian GNU/Linux
    - 07.05 Использование Google Drive в Linux
    - 18.04 Использование нескольких сетевых стеков в Linux
    - 15.04 Восстановление стандартного KDE меню после его удаления (например, wine)
    - 11.04 Настройка gmirror при использовании GPT во FreeBSD 9
    - 09.04 Маршрутизатор на базе FreeBSD с приоритизация трафика средствами PF и ALTQ
    - 02.04 Частичное восстановление данных MySQL из бэкапа, созданного с использованием LVM
    - 21.03 Настройка DNSSEC в BIND 9.9
    - 17.03 Набор номера на Cisco IP Phone 7960/7940 из скрипта
    RSS | Следующие 15 записей >>


    ПОДПИШИСЬ НА ЖУРНАЛ Linux Format 2012!

    Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

    Каждый, кто оформит подписку, получает бонусы и подарки- объёмные наклейки на системный блок, диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

    Оформить подписку на год


      Закладки на сайте
      Проследить за страницей
    Created 1996-2012 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    RUNNet TopList