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:
parent
0d07bcba27
commit
8028832653
@ -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
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
39
etc/rc.subr
39
etc/rc.subr
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user