Страница 1 из 1
Perl daemon name
Добавлено: 2014-03-13 12:43:17
harmless
Добрый день, товарищи!
есть dhcp сервер написанный на perl, при работе в процессах он значиться как
Вопрос - как задать имя демона чтоб он в процессах числился как dhcpd?
Re: Perl daemon name
Добавлено: 2014-03-13 15:20:43
ChihPih
Ищите на
странице фразу $PROGRAM_NAME .
Re: Perl daemon name
Добавлено: 2014-03-13 15:53:21
harmless
Сюдя из описаного там в BSD не получиться этого сделать(
не могу понять почему sa-spamd rc-скрипт определяет что запущен демон, а у меня нет(
Re: Perl daemon name
Добавлено: 2014-03-13 16:46:52
ChihPih
Проверяет существование файла, который создается заранее запускаемым процессом?
Re: Perl daemon name
Добавлено: 2014-03-13 16:52:55
harmless
ChihPih писал(а):Проверяет существование файла, который создается заранее запускаемым процессом?
Не совсем понял
Вот rc-script запуска демона
Код: Выделить всё
#!/bin/sh
# PROVIDE: dhcpd
# REQUIRE: DAEMON mysql
# KEYWORD: shutdown
. /etc/rc.subr
name="dhcpd"
rcvar="dhcpd_enable"
load_rc_config $name
: ${dhcpd_enable="NO"}
: ${dhcpd_pidfile="/var/run/${name}.pid"}
pidfile=${dhcpd_pidfile:-"/var/run/${name}.pid"}
command=/usr/local/sbin/${name}.pl
command_args="-p ${pidfile} "
start_precmd="${name}_prestart"
dhcpd_prestart() {
. /usr/local/etc/dhcpd/dhcpd.conf ;
if [ -z "${id}" ]; then
err 1 "Please specify id with id parameter in /usr/local/etc/dhcpd/dhcpd.conf";
fi
command_args="${command_args} -id ${id}";
if [ -z "${threads}" ]; then
err 1 "Please specify num of threads with threads parameter in /usr/local/etc/dhcpd/dhcpd.conf";
fi
command_args="${command_args} -t ${threads}";
if [ -z "${ip}" ]; then
err 1 "Please specify ip with ip parameter in /usr/local/etc/dhcpd/dhcpd.conf";
fi
command_args="${command_args} -b ${ip}";
if [ -z "${port}" ]; then
err 1 "Please specify port number with port parameter in /usr/local/etc/dhcpd/dhcpd.conf";
fi
command_args="${command_args} -sp ${port}";
if [ -z "${client_port}" ]; then
err 1 "Please specify client port number with client_port parameter in /usr/local/etc/dhcpd/dhcpd.conf";
fi
command_args="${command_args} -cp ${client_port}";
if [ -n "${mirror}" ]; then
command_args="${command_args} -m ${mirror}";
fi
if [ -z "${idn}" ]; then
err 1 "Please specify db ident with idn parameter in /usr/local/etc/dhcpd/dhcpd.conf";
fi
command_args="${command_args} -dbs \"${idn}\"";
if [ -n "${password}" ]; then
command_args="${command_args} -dbp ${password}";
fi
if [ -n "${login}" ]; then
command_args="${command_args} -dbl ${login}";
fi
if [ -n "${daemon}" ]; then
command_args="${command_args} -d";
fi
if [ -n "${debug}" ]; then
command_args="${command_args} -v ${debug}";
fi
}
run_rc_command "$1"
Демон пишет всой пид в пид-файл, номер в файле совпадает с номером процесса, но
Код: Выделить всё
# /usr/local/etc/rc.d/dhcpd status
dhcpd is not running.
# cat /var/run/dhcpd.pid
3217
# sockstat | grep perl
root perl5.16.3 2590 3 udp4 127.0.0.1:67 *:*
root perl5.16.3 2590 4 tcp4 127.0.0.1:26271 127.0.0.1:3306
root perl5.16.3 2590 5 tcp4 127.0.0.1:35000 127.0.0.1:3306
root perl5.16.3 2590 6 tcp4 127.0.0.1:65519 127.0.0.1:3306
root perl5.16.3 2590 7 stream -> /tmp/mysql.sock
Re: Perl daemon name
Добавлено: 2014-03-13 16:59:36
ChihPih
Ну вот например
pidfile=${dhcpd_pidfile:-"/var/run/${name}.pid"}
Файл с ID процесса. МОжно его проверять на существование (существует, значит запущен).
Это, кстати, должно по умолчанию работать, если скрипт запуска правильно написан
Re: Perl daemon name
Добавлено: 2014-03-13 17:05:53
harmless
ChihPih писал(а):Ну вот например
pidfile=${dhcpd_pidfile:-"/var/run/${name}.pid"}
Файл с ID процесса. МОжно его проверять на существование (существует, значит запущен).
Это, кстати, должно по умолчанию работать, если скрипт запуска правильно написан
Так в том то и дело что должен проверяться, но не проверяеться
я так подозреваю что rc.subr проверяет наличие запущеного демона посредством ps -aux|grep $name
Re: Perl daemon name
Добавлено: 2014-03-13 17:26:15
harmless
Решение удивительное
меняем на
и сам скрипт ложим без расширения, вот и все дела