Introduce to rc.subr get_pidfile_from_conf(). It does just what it sounds

like, determines the path to a pid file as it is specified in a conf file.

Use the new feature for rc.d/named and rc.d/devd, the 2 services in the
base that list their pid files in their conf files.

Remove the now-obsolete named_pidfile, and warn users if they have it set.
This commit is contained in:
Doug Barton 2011-04-23 04:26:31 +00:00
parent 0d07bcba27
commit 8028832653
5 changed files with 69 additions and 11 deletions

View File

@ -274,7 +274,6 @@ named_enable="NO" # Run named, the DNS server (or NO).
named_program="/usr/sbin/named" # Path to named, if you want a different one.
named_conf="/etc/namedb/named.conf" # Path to the configuration file
#named_flags="" # Use this for flags OTHER than -u and -c
named_pidfile="/var/run/named/pid" # Must set this in named.conf as well
named_uid="bind" # User to run named as
named_chrootdir="/var/named" # Chroot directory (or "" not to auto-chroot it)
named_chroot_autoupdate="YES" # Automatically install/update chrooted

View File

@ -13,12 +13,23 @@
name="devd"
rcvar=`set_rcvar`
command="/sbin/${name}"
pidfile=/var/run/${name}.pid
start_precmd=${name}_prestart
stop_precmd=find_pidfile
find_pidfile()
{
if get_pidfile_from_conf pid-file /etc/devd.conf; then
pidfile="$_pidfile_from_conf"
else
pidfile="/var/run/${name}.pid"
fi
}
devd_prestart ()
{
find_pidfile
# If devd is disabled, turn it off in the kernel to avoid memory leaks.
if ! checkyesno ${rcvar}; then
$SYSCTL hw.bus.devctl_disable=1

View File

@ -112,8 +112,19 @@ named_reload()
${command%/named}/rndc reload
}
find_pidfile()
{
if get_pidfile_from_conf pid-file $named_conf; then
pidfile="$_pidfile_from_conf"
else
pidfile="/var/run/named/pid"
fi
}
named_stop()
{
find_pidfile
# This duplicates an undesirably large amount of code from the stop
# routine in rc.subr in order to use rndc to shut down the process,
# and to give it a second chance in case rndc fails.
@ -156,6 +167,12 @@ create_file () {
named_prestart()
{
find_pidfile
if [ -n "$named_pidfile" ]; then
warn 'named_pidfile: now determined from the conf file'
fi
command_args="-u ${named_uid:=root}"
if [ ! "$named_conf" = '/etc/namedb/named.conf' ]; then
@ -279,7 +296,6 @@ load_rc_config $name
#
required_dirs="$named_chrootdir" # if it is set, it must exist
pidfile="${named_pidfile:-/var/run/named/pid}"
named_confdir="${named_chrootdir}${named_conf%/*}"
run_rc_command "$1"

View File

@ -383,6 +383,45 @@ wait_for_pids()
fi
}
#
# get_pidfile_from_conf string file
#
# Takes a string to search for in the specified file.
# Ignores lines with traditional comment characters.
#
# Example:
#
# if get_pidfile_from_conf string file; then
# pidfile="$_pidfile_from_conf"
# else
# pidfile='appropriate default'
# fi
#
get_pidfile_from_conf()
{
local string file line
string="$1" ; file="$2"
if [ -z "$string" -o -z "$file" ] || [ ! -s "$file" ]; then
err 3 'USAGE: get_pidfile_from_conf string file'
fi
while read line; do
case "$line" in
*[#\;]*${string}*) continue ;;
*${string}*) break ;;
esac
done < $file
if [ -n "$line" ]; then
line=${line#*/}
_pidfile_from_conf="/${line%%[\"\;]*}"
else
return 1
fi
}
#
# check_startmsgs
# If rc_quiet is set (usually as a result of using faststart at

View File

@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd January 7, 2011
.Dd April 22, 2011
.Dt RC.CONF 5
.Os
.Sh NAME
@ -1832,13 +1832,6 @@ is set to
.Dq Li YES ,
these are the flags to pass to
.Xr named 8 .
.It Va named_pidfile
.Pq Vt str
This is the default path to the
.Xr named 8
daemon's PID file.
This must match the location in
.Xr named.conf 5 .
.It Va named_uid
.Pq Vt str
The user that the