Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> мониторинг процесса, как грамотно организовать? 
:(
    Опции темы
bel_nikita
  Дата 4.12.2009, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: нет
Всего: 47



Как известно программы непредсказуемы smile  И нужно это дело как-то мониторить, т.е. раз в 5-10 секунд проверять, запущен процесс или нет, в каком состоянии. Если какие-либо проблемы (exception, illigal instruction, ...) - то рестартовать.

В общем, как грамотно организовать мониторинг запущенного процесса под Linux'ом? Может есть какие-то стандартные средства?




--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
bilbobagginz
Дата 5.12.2009, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 113
Всего: 317



bel_nikita, а какой процесс собираемся мониторить ?



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
gcc
Дата 5.12.2009, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 2
Всего: 17



1) monit http://www.lissyara.su/articles/freebsd/trivia/monit/ (лучше)
2) monitord http://www.lissyara.su/articles/freebsd/trivia/monitord/
3) элементарный скрипт написать

Это сообщение отредактировал(а) gcc - 5.12.2009, 00:21
PM WWW ICQ Skype GTalk Jabber   Вверх
Vaulter
Дата 5.12.2009, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 3
Всего: 22



в cron запхать скриптик, дергающий process status 
и рестартующий, если PROCESS_RESTART = 1 smile
и если process умеет pid фал делать -  smile 


--------------------
PM MAIL WWW ICQ   Вверх
Imple
Дата 6.12.2009, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1546
Регистрация: 14.9.2007
Где: Алма-Ата

Репутация: 21
Всего: 87



bel_nikita, смотря что вам нужно мониторить, по какому критерию. Например, запущен процесс или нет, давно ли писал сообщения в лог, и т.д.

Распишите, пожайлуста, более подробно ;-)


--------------------
Не шалю, никого не трогаю, починяю сервер.
PM WWW ICQ Skype GTalk Jabber   Вверх
bel_nikita
Дата 7.12.2009, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: нет
Всего: 47



Сделал, вот, так:
Код

ENABLE=1
DISABLE=0
WATCHDOG=0
WATCHDOG_TIMEOUT=2
E_APPL_WORK=0
E_APPL_DEAD=1

# APP FILES DEFINITION
APP=myprog

Monitoring(){

    RESULT=$E_APPL_DEAD;
    FIND_PROC=`ps aux | grep -v grep | grep $APP | awk '{print $8}'`
    #echo $FIND_PROC
    
    if [ -z $FIND_PROC ]
    then
        RESULT=$E_APPL_DEAD;
        return $RESULT;
    fi
    
    case "$FIND_PROC" in
        "T" | "Tl" | "X" | "Xl" | "Z" | "Zl")
        #echo "is dead..."
        RESULT=$E_APPL_DEAD;
        ;;
        *)
        #echo "is working..."
        RESULT=$E_APPL_WORK;
        ;;
    esac
    return $RESULT;
}

######################
#    MAIN LOOP
while true  
do
        Monitoring
        return_value=$?
        if [ "$return_value" -ne $E_APPL_WORK ]
        then
            echo "Restarting APP..."
            Stop_App
            Start_APP        
        fi
        sleep $WATCHDOG_TIMEOUT
done


Но что-то мне не нравится. Если ps выдаст, что-то вроде, Tl+ - то фиг сработает мой код :-(

Это сообщение отредактировал(а) bel_nikita - 7.12.2009, 20:51


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Vaulter
Дата 7.12.2009, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 3
Всего: 22



да и привязка к выводу другой программы не есть гуд

вопрос: есть возможность изменения самой программы? есть возможность изменения скрипта запуска программы?
планируется ли запуск программы в нескольких экземплярах на одной машинке (от одного пользователя)?

по хорошему алгоритм таков:
1. при старте, пишем PID запущенного экземпляра в ( если экз. один - в один файл, если экз.-ров несколько, придумать стек PID файлов) ( man bash $$ )
2. при запросе статуса, читается PID из PID файла, и посылается нулевой сигнал - kill -0 $PID. Если прошло - значит процесс жив. Если не прошло - значит процесса нет.
3. статус процесса узнаем из /proc/$PID/status или /proc/$PID/stat



Это сообщение отредактировал(а) Vaulter - 7.12.2009, 22:42


--------------------
PM MAIL WWW ICQ   Вверх
bel_nikita
Дата 8.12.2009, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: нет
Всего: 47



Vaulter
1. Изменить код программы возможно
2. Изменить скрипт запуска также возможно
3. Один экземпляр программы


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
admsasha
Дата 8.12.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: 0
Всего: 6



просто для коллекции smile

Код

#!/bin/bash

cd /path_folder
while [ true ] ; do
    /full_path_for_programm
    sleep 2
done


Сама программа должна быть не в фоне. Но сам bash-скрипт можно и в демон. Как раз где то тут несколько примеров давали, как это сделать smile

Это сообщение отредактировал(а) admsasha - 8.12.2009, 15:46
PM MAIL WWW ICQ Jabber   Вверх
gcc
Дата 8.12.2009, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 2
Всего: 17



bel_nikitamonit + дополнительные полезные возможности с ней
PM WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0949 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.