Для любого демона нужен скрипт управления чтобы его запускать, останавливать и т.д. Но не всегда в комплекте есть этот самый скрипт инициализации. Сегодня я расскажу как написать простейший скрипт инициализации для двух основных систем с которыми я работаю это FreeBSD и Debian/Ubuntu. Для примера будем разбирать демон svnserve, а запускать я буду все от пользователя www.
Пример скрипта для FreeBSD
Создадим файл /usr/local/etc/rc.d/svnserve
touch /usr/local/etc/rc.d/svnserve
chmod +x /usr/local/etc/rc.d/svnserve
Этот скрипт инициализации взят из поставки к порту subversion
#!/bin/sh
# PROVIDE: svnserve
# REQUIRE: DAEMON
# KEYWORD: shutdown
# Каждый rc.d должен "включать" в себя файл /etc/rc.subr (здесь для этого используется команда ".")
# перед тем как он вызовет функцию rc.subr(8). Наиболее предпочтительный вариант - сделать это перед
# любыми другими действиями.
. /etc/rc.subr
# Определяем параметры по умолчанию, вы можете указать инные в /etc/rc.conf, об этом чуть ниже
svnserve_enable=${svnserve_enable:-"NO"}
svnserve_flags=${svnserve_flags:-"-d --listen-port=3690 --listen-host 0.0.0.0"}
svnserve_data=${svnserve_data:-"/var/svn/repos"}
svnserve_user=${svnserve_user:-"www"}
svnserve_group=${svnserve_group:-"www"}
name=svnserve
rcvar=`set_rcvar`
load_rc_config $name
command=/usr/local/bin/svnserve.bin
command_args="-r ${svnserve_data}"
# $1 - это первый аргумент коммандной строки
# Например, если вы ввели "svnserve start", то $1 будет "start".
run_rc_command "$1"
Читать полностью »