Как запустить свой скрипт при загрузке ?

Респект вам, друзья.
Хотел настроить nginx + PHP c помощью FastCGI. В статье http://blog.kovyrin.net/2006/05/30/nginx-php-fastcgi-howto/lang/ru/
советуют запускать процессы php-cgi при помощи утилиты spawn-fcgi. На сколько я понял это скрипт. Я его немного подправил. Cоздал на него ссылку /etc/init.d/spawn_php и добавил в уровень запуска default.

После загрузки набираю $/etc/init.d/spawn_php start - и PHP стартует (без "start" тоже работает):
spawn-fcgi.c.197: child spawned successfully: PID: 15508

Но при самой загрузке системы скрипт не выполняется.
В /var/log/messages нашёл следующее:
Jun 22 23:10:12 host rc-scripts: Could not get dependency info for "spawn_php"!
Jun 22 23:10:12 host rc-scripts: Please run:
Jun 22 23:10:12 host rc-scripts: # /sbin/depscan.sh
Jun 22 23:10:12 host rc-scripts: to try and fix this.

Текст скрипта (блоки "depend" и "start" добавлены от незнания в попытке привести к соответствию с gentoo handbook):

#!/bin/bash
depend()
{
after *;
}

## ABSOLUTE path to the spawn-fcgi binary
SPAWNFCGI="/usr/bin/spawn-fcgi"

## ABSOLUTE path to the PHP binary
FCGIPROGRAM="/usr/lib/php5/bin/php-cgi"

## TCP port to which to bind on localhost
FCGIPORT="1026"

## number of PHP children to spawn
PHP_FCGI_CHILDREN=2

## maximum number of requests a single PHP process can serve before it is resta$
PHP_FCGI_MAX_REQUESTS=1000

## IP addresses from which PHP should access server connections
FCGI_WEB_SERVER_ADDRS="127.0.0.1,192.168.2.10"

# allowed environment variables, separated by spaces
ALLOWED_ENV="ORACLE_HOME PATH USER"

## if this script is run as root, switch to the following user
#USERID=wwwrun
#GROUPID=wwwrun

################## no config below this line

if test x$PHP_FCGI_CHILDREN = x; then
PHP_FCGI_CHILDREN=5
fi

export PHP_FCGI_MAX_REQUESTS
export FCGI_WEB_SERVER_ADDRS

ALLOWED_ENV="$ALLOWED_ENV PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS"
if test x$UID = x0; then
EX="$SPAWNFCGI -p $FCGIPORT -f $FCGIPROGRAM -u $USERID -g $GROUPID -C $PHP_FC$
else
EX="$SPAWNFCGI -p $FCGIPORT -f $FCGIPROGRAM -C $PHP_FCGI_CHILDREN"
fi

# copy the allowed environment variables

E=

for i in $ALLOWED_ENV; do
E="$E $i=${!i}"
done

# clean the environment and set up a new one
env - $E $EX
start()
{
return 0;
}

Подскажите как запустить?

#!/sbin/runscript Похож

#!/sbin/runscript
Похоже.

Вот примерный шаблон:

#!/sbin/runscript
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

depend() {

}

start() {

}

stop() {

}

restart() {

}

Не работает

Не понял зачем пример шаблона. Насколько я понимаю, обязательным здесь является только блок start. Но если я помещаю туда код, то тогда скрипт не работает даже при запуске руками. Поймите, я совсем нуб. Мне бы поподробнее.

возьмите

возьмите обычный скрипт (без depend и start) и вызовите его из /etc/conf.d/local.start

может не то делаю ?

# /etc/conf.d/local.start

# This is a good place to load any misc programs
# on startup ( use 1>&2 to hide output)

#start PHP FastCGI by spawn-php.sh
/usr/lib/php5/bin/spawn-php.sh

Не работает. В /var/log/messages ничего нет. Выставил права
-rwxr-xr-x 1 root root 183 Jun 23 12:37 /etc/conf.d/local.start
тоже не работает

Сам скрипт /usr/lib/php5/bin/spawn-php.sh удачно запускается руками, а также если вызвать /etc/conf.d/local.start.

s/не то/не так/

Руками ты его запускаешь из стандартного пользовательского окружения (некоторый набор значений переменных окружения).
Сохрани его:
# set > /root/work_var_list
После чего создай скрипт следующего содержания:

#!/bin/bash
#
set > /root/fail_var_list

Пропиши его в /etc/conf.d/local.start
Перезагрузись и выполни # diff /root/work_var_list /root/fail_var_list

Есть мнение, что ответ на твой вопрос кроется именно здесь.
--
Live free or die

не совпадают переменные

Файл /root/fail_var_list получается намного больше. Приводить его поэтому не буду.
Хуже всего:

...
> y=
> KV_major ()
> {
>     [[ -z $1 ]] && return 1;
>     local KV=$@;
>     echo ${KV%%.*}
> }
...

и дальше куча функций. Очень большой и непонятный мне файл.

Подскажите пожалуйста что делать?

?

dontwagewar написал(а):
Очень большой и непонятный мне файл.

С точки зрения степени понятности рекомендую мою любимую доку: ABS

dontwagewar написал(а):
Подскажите пожалуйста что делать?

Короче: первый файл - это параметры твоего рабочего окружения (при запуске из которого всё работает).
Второй файл - рабочее окружение на этапе выполнения скрипта при загрузке системы.

Наиболее вероятна ситуация когда в первом файле есть нечто необходимое для корректной отработки скрипта и отсутствующее во втором.
Лечится прописыванием необходимых переменных в заголовочной части скрипта.
--
Live free or die

Ок

Ясно. Спасибо. Буду читать доку. А возможно выставив не те переменные сломать загрузку? Просто у меня VPS, и если он не загрузится, то писать в техподдержку придётся.

Товарищ же

Товарищ же русским по белому написал "#!/sbin/runscript" первой строчкой, в шаблоне из ХэндБук'а написано тоже самое

Исправил - не работает

Это директива чтоль какая? всё равно не работает.

Просто у меня

Просто у меня была аналогичная проблема. Зато теперь должно требовать аргумент start. Возможно не работает из-за "after *", т.к. в системе уже есть скрипт с такой строчкой(/etc/init.d/local) и непонятно какой запускать последним, но это уже догадка

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".