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

Автозапуск демона после падения

Добавлено: 2009-02-18 13:33:37
dotnet
Ни у кого случайно нет bash скрипта который проверяет наличие в памяти процесса и если его нет - запускает. По идеи это не сложно в написании, но сам не умею. Буду признателен если кто поделится.

* Проблема в том что почему-то через какое-то время вылетает php-cgi (FastCGI) сервер.

Re: Автозапуск демона после падения

Добавлено: 2009-02-18 13:38:40
terminus
Dwatch (Daemon Watch) is a program that watches over other programs and performs actions based on conditions specified in a configuration file. See dwatch.conf for an example of what the file might look like.

Dwatch is meant to be run from cron at regular intervals.
http://www.freshports.org/sysutils/dwatch/

Re: Автозапуск демона после падения

Добавлено: 2009-02-18 13:50:24
Termitnik
Насколько я понимаю, достаточно будет следующего:

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

#!/bin/sh
if ps ax | grep <имя процесса> > /dev/null; then echo "Process is running"
else echo "Process is NOT running, restarting";
<путь к стартовому сценарию> start
fi

Re: Автозапуск демона после падения

Добавлено: 2009-02-18 14:15:07
Гость
http://www.freshports.org/sysutils/monitord/
This port allows one to monitor other standalone services and
automatically restart them if they are accidentally and unwittingly
terminated, or crash either because of instability or a DoS attack.
It simplifies a task capable of being performed by cron(8) by not
requiring custom scripts to be written for each service being
monitored. The configuration file is simple and easily setup.

Re: Автозапуск демона после падения

Добавлено: 2009-02-18 14:15:51
gloom
http://www.lissyara.su/?id=1268
http://www.lissyara.su/?id=1266
все велосипеды давно изобретены

Re: Автозапуск демона после падения

Добавлено: 2009-02-19 10:05:58
dotnet
Всем спасибо за помощь. Установил monit , очень понравилась. Но возникла другая проблема :). Там при добавлении процесса за которым нужно следить, требуется указать его .pid файл. Я порылся в /var/run но pid файла процесса php-cgi так и не нашел. Как это можно сделать :)?

Re: Автозапуск демона после падения

Добавлено: 2009-02-19 10:15:37
zingel
добавить в конфиг

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

pidfile="/var/run/${name}.pid";

Re: Автозапуск демона после падения

Добавлено: 2009-02-19 10:20:30
dotnet
zingel писал(а):добавить в конфиг

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

pidfile="/var/run/${name}.pid";
А про какой конфиг идет речь? php.ini?

Re: Автозапуск демона после падения

Добавлено: 2009-02-19 10:21:50
zingel
не, cgi

Re: Автозапуск демона после падения

Добавлено: 2009-02-19 10:26:32
dotnet
А можно подробней. Я если что про подпись вашу не забуду :)

Re: Автозапуск демона после падения

Добавлено: 2009-02-19 10:29:28
zingel
можно да

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

Создаём скрипт запуска fcgi-сервера:
/usr/local/etc/rc.d/php-cgi

#!/bin/sh
#
# PROVIDE: php_fastcgi
# REQUIRE: DAEMON
# BEFORE:  LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name="php_fastcgi"
rcvar=`set_rcvar`

load_rc_config $name

: ${php_fastcgi_enable="NO"}
: ${php_fastcgi_user="www"}
: ${php_fastcgi_bindaddr="127.0.0.1"}
: ${php_fastcgi_bindport="9000"}
: ${php_fastcgi_children="5"}
: ${php_fastcgi_max_requests="1000"}
: ${php_fastcgi_allowed_env=""}

export PHP_FCGI_CHILDREN=${php_fastcgi_children};
export PHP_FCGI_MAX_REQUESTS=${php_fastcgi_max_requests};

command="/usr/local/bin/php-cgi";
command_args="-q -b ${php_fastcgi_bindaddr}:${php_fastcgi_bindport} &";
pidfile="/var/run/${name}.pid";

_allowed_env="ORACLE_HOME PATH USER PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS";
_allowed_env="${_allowed_env} ${php_fastcgi_allowed_env}";

start_precmd=start_precmd;
start_postcmd="sleep 1;ps -U ${php_fastcgi_user} -o 'pid,command'|grep ${command}|head -1|\
		awk '{print \$1}' > ${pidfile}";
stop_postcmd=stop_postcmd;

start_precmd()
{
   export USER=${php_fastcgi_user};
   E=
   for i in ${_allowed_env}; do
       eval _val="\$$i";
       if [ "${_val}_x" != "_x" ]; then
           eval _add="$i=$_val";
           E="${E} ${_add}";
       fi
   done
   command="env - ${E} ${command}";
}

stop_postcmd()
{
    rm -f $pidfile
}

load_rc_config $name;

run_rc_command "$1";
wiki.lissyara.su/wiki/Nginx_php-cgi

Re: Автозапуск демона после падения

Добавлено: 2009-02-19 10:48:11
dotnet
А почему ": ${php_fastcgi_enable="NO"}" установлен как NO, может поправить на YES? У меня связка nginx + php fast cgi

Re: Автозапуск демона после падения

Добавлено: 2009-02-19 13:25:59
zingel

Re: Автозапуск демона после падения

Добавлено: 2009-02-22 0:00:36
zingel
ну и где мои деньги? (с)

p.s. зачем напиз...л стаорму человеку?