Страница 1 из 1

скрипт загрузки

Добавлено: 2009-09-20 19:38:35
warzoni
Ребят вот думаю можно ли зделать скрипт каторый бы не по крону азапустился и весел как демон сматрел нагрузку и когда нагрузка достегала например лоад авгри 4 он запускал команду определённую а когда снижалась до 0.50 то запускал другую каманду...прошу помочь в данном вопросе...загрузку шоб грепал по top...

Re: скрипт загрузки

Добавлено: 2009-09-21 17:30:00
reLax
warzoni писал(а):Ребят вот думаю можно ли зделать скрипт каторый бы не по крону азапустился и весел как демон сматрел нагрузку и когда нагрузка достегала например лоад авгри 4 он запускал команду определённую а когда снижалась до 0.50 то запускал другую каманду...прошу помочь в данном вопросе...загрузку шоб грепал по top...
Ну скриптамми это конечно не делается. Но, как вариант - бесконечный цикл while (true) ,sleep, awk :)

Re: скрипт загрузки

Добавлено: 2009-09-21 17:39:18
sch
/usr/ports/sysutil/monit - за нагрузкой умеет следить штатно. Смотри примеры конфигурации - там много интересного.

Re: скрипт загрузки

Добавлено: 2009-09-21 17:57:09
warzoni
reLax писал(а):
warzoni писал(а):Ребят вот думаю можно ли зделать скрипт каторый бы не по крону азапустился и весел как демон сматрел нагрузку и когда нагрузка достегала например лоад авгри 4 он запускал команду определённую а когда снижалась до 0.50 то запускал другую каманду...прошу помочь в данном вопросе...загрузку шоб грепал по top...
Ну скриптамми это конечно не делается. Но, как вариант - бесконечный цикл while (true) ,sleep, awk :)

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

Re: скрипт загрузки

Добавлено: 2009-09-21 17:57:44
warzoni
sch писал(а):/usr/ports/sysutil/monit - за нагрузкой умеет следить штатно. Смотри примеры конфигурации - там много интересного.
я посматрю но мне нужен скрипт всётаки :smile:

Re: скрипт загрузки

Добавлено: 2009-09-22 15:30:50
sch
Да на здоровье - хоть всю ОС самостоятельно переписывай :roll:

Вот простой пример -- есть в monitrc.sample.
После установки порта в share/doc/monit есть examples.html -- там гораздо больше и интереснее примеры.

Код: Выделить всё

## Check that a process is running, in this case Apache, and that it respond
## to HTTP and HTTPS requests. Check its resource usage such as cpu and memory,
## and number of children. If the process is not running, monit will restart 
## it by default. In case the service was restarted very often and the 
## problem remains, it is possible to disable monitoring using the TIMEOUT
## statement.
#    
#  check process apache with pidfile /usr/local/apache/logs/httpd.pid
#    start program = "/etc/init.d/httpd start" with timeout 60 seconds
#    stop program  = "/etc/init.d/httpd stop"
#    if cpu > 60% for 2 cycles then alert
#    if cpu > 80% for 5 cycles then restart
#    if totalmem > 200.0 MB for 5 cycles then restart
#    if children > 250 then restart
#    if loadavg(5min) greater than 10 for 8 cycles then stop
#    if failed host www.tildeslash.com port 80 protocol http
#       and request "/monit/doc/next.php"
#       then restart
#    if failed port 443 type tcpssl protocol http
#       with timeout 15 seconds
#       then restart
в качестве реакции на выполнение условия можно использовать команду exec "/your/script/here.sh"

Re: скрипт загрузки

Добавлено: 2009-09-22 15:43:46
warzoni
sch писал(а):Да на здоровье - хоть всю ОС самостоятельно переписывай :roll:

Вот простой пример -- есть в monitrc.sample.
После установки порта в share/doc/monit есть examples.html -- там гораздо больше и интереснее примеры.

Код: Выделить всё

## Check that a process is running, in this case Apache, and that it respond
## to HTTP and HTTPS requests. Check its resource usage such as cpu and memory,
## and number of children. If the process is not running, monit will restart 
## it by default. In case the service was restarted very often and the 
## problem remains, it is possible to disable monitoring using the TIMEOUT
## statement.
#    
#  check process apache with pidfile /usr/local/apache/logs/httpd.pid
#    start program = "/etc/init.d/httpd start" with timeout 60 seconds
#    stop program  = "/etc/init.d/httpd stop"
#    if cpu > 60% for 2 cycles then alert
#    if cpu > 80% for 5 cycles then restart
#    if totalmem > 200.0 MB for 5 cycles then restart
#    if children > 250 then restart
#    if loadavg(5min) greater than 10 for 8 cycles then stop
#    if failed host www.tildeslash.com port 80 protocol http
#       and request "/monit/doc/next.php"
#       then restart
#    if failed port 443 type tcpssl protocol http
#       with timeout 15 seconds
#       then restart
в качестве реакции на выполнение условия можно использовать команду exec "/your/script/here.sh"
я вижу да толк оно самое но я не просто атк скрипт поросил дело втом что linux...я нашол там опдобное но хочу просто скрипт простой понятный..щас буду сматреть. :smile:

Re: скрипт загрузки

Добавлено: 2009-09-22 17:33:24
strmaks
warzoni писал(а):Ребят вот думаю можно ли зделать скрипт каторый бы не по крону азапустился и весел как демон сматрел нагрузку и когда нагрузка достегала например лоад авгри 4 он запускал команду определённую а когда снижалась до 0.50 то запускал другую каманду...прошу помочь в данном вопросе...загрузку шоб грепал по top...
Есть у меня волшебный скриптик который был написан на скору руку когда прижало, но как то он так прижился, что работает больше 3 лет как часики.
запускается по крону раз в 5 минут, в случае если LA больше 10 перезагружает апач.

Код: Выделить всё

#!/bin/sh
LA=`/usr/bin/w -n | /usr/bin/grep ', load averages:' | /usr/bin/awk '{print int($10);}'`
if [ $LA -gt 10 ]
then
        if [ ! -f /tmp/restart_lock ]
        then
                echo "Load average = $LA"
                >/tmp/restart_lock
                /usr/local/etc/rc.d/apache.sh restart
                exit
        fi
fi
if [ -f /tmp/restart_lock ]
then
        rm -f /tmp/restart_lock
fi

Re: скрипт загрузки

Добавлено: 2009-09-22 17:43:33
warzoni
strmaks писал(а):
warzoni писал(а):Ребят вот думаю можно ли зделать скрипт каторый бы не по крону азапустился и весел как демон сматрел нагрузку и когда нагрузка достегала например лоад авгри 4 он запускал команду определённую а когда снижалась до 0.50 то запускал другую каманду...прошу помочь в данном вопросе...загрузку шоб грепал по top...
Есть у меня волшебный скриптик который был написан на скору руку когда прижало, но как то он так прижился, что работает больше 3 лет как часики.
запускается по крону раз в 5 минут, в случае если LA больше 10 перезагружает апач.

Код: Выделить всё

#!/bin/sh
LA=`/usr/bin/w -n | /usr/bin/grep ', load averages:' | /usr/bin/awk '{print int($10);}'`
if [ $LA -gt 10 ]
then
        if [ ! -f /tmp/restart_lock ]
        then
                echo "Load average = $LA"
                >/tmp/restart_lock
                /usr/local/etc/rc.d/apache.sh restart
                exit
        fi

fi
if [ -f /tmp/restart_lock ]
then
        rm -f /tmp/restart_lock
fi

можеш зделать так чтобы он больше 2 лоад авгри запускл скрипт ниже двух лоад авгри гдето 1 останавливал!

Re: скрипт загрузки

Добавлено: 2009-09-22 17:56:03
strmaks
warzoni писал(а):можеш зделать так чтобы он больше 2 лоад авгри запускл скрипт ниже двух лоад авгри гдето 1 останавливал!
Ну как то вот так...

Код: Выделить всё

#!/bin/sh
LA=`/usr/bin/w  | /bin/grep 'load average:' | /bin/awk '{print int($10)}'`
# Проверяем не больше ли LA чем 2
if [ $LA -gt 2 ]
then
        if [ ! -f /tmp/restart_lock ]
        then
                >/tmp/restart_lock
                /usr/local/etc/rc.d/apache.sh  start
        fi
fi
# Проверяем не меньше ли LA чем 1
if [ $LA -lt 1 ]
then
        if [ -f /tmp/restart_lock ]
        then
                /usr/local/etc/rc.d/apache.sh  stop
                rm -f /tmp/restart_lock
        fi
fi

Re: скрипт загрузки

Добавлено: 2009-09-22 18:54:22
warzoni
strmaks писал(а):
warzoni писал(а):можеш зделать так чтобы он больше 2 лоад авгри запускл скрипт ниже двух лоад авгри гдето 1 останавливал!
Ну как то вот так...

Код: Выделить всё

#!/bin/sh
LA=`/usr/bin/w  | /bin/grep 'load average:' | /bin/awk '{print int($10)}'`
# Проверяем не больше ли LA чем 2
if [ $LA -gt 2 ]
then
        if [ ! -f /tmp/restart_lock ]
        then
                >/tmp/restart_lock
                /usr/local/etc/rc.d/apache.sh  start
        fi
fi
# Проверяем не меньше ли LA чем 1
if [ $LA -lt 1 ]
then
        if [ -f /tmp/restart_lock ]
        then
                /usr/local/etc/rc.d/apache.sh  stop
                rm -f /tmp/restart_lock
        fi
fi
щас закгрузка 0.80

делаю вместо /usr/local/etc/rc.d/apache.sh stop

echo stop и не чего не высвечиваетца...довай тестанём по кускам система линукс..

Код: Выделить всё

/usr/bin/w  | /bin/grep 'load average:'
 19:54:57 up 17 days, 23:47,  1 user,  load average: 1.09, 1.42, 1.23

Re: скрипт загрузки

Добавлено: 2009-09-23 15:16:41
strmaks
warzoni писал(а):
щас закгрузка 0.80

делаю вместо /usr/local/etc/rc.d/apache.sh stop

echo stop и не чего не высвечиваетца...довай тестанём по кускам система линукс..

Код: Выделить всё

/usr/bin/w  | /bin/grep 'load average:'
 19:54:57 up 17 days, 23:47,  1 user,  load average: 1.09, 1.42, 1.23
Логично, для того что бы он сделал stop надо что бы спева выполнился start