есть dhcp сервер написанный на perl, при работе в процессах он значиться как
Код: Выделить всё
пользователь perl pid и т.д.
Код: Выделить всё
пользователь perl pid и т.д.
Не совсем понялChihPih писал(а):Проверяет существование файла, который создается заранее запускаемым процессом?
Код: Выделить всё
#!/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
Так в том то и дело что должен проверяться, но не проверяетьсяChihPih писал(а):Ну вот например
pidfile=${dhcpd_pidfile:-"/var/run/${name}.pid"}
Файл с ID процесса. МОжно его проверять на существование (существует, значит запущен).
Это, кстати, должно по умолчанию работать, если скрипт запуска правильно написан
Код: Выделить всё
command=/usr/local/sbin/${name}.pl
Код: Выделить всё
command=/usr/local/sbin/${name}