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
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=220962
@ -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_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_conf="/etc/namedb/named.conf" # Path to the configuration file
|
||||||
#named_flags="" # Use this for flags OTHER than -u and -c
|
#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_uid="bind" # User to run named as
|
||||||
named_chrootdir="/var/named" # Chroot directory (or "" not to auto-chroot it)
|
named_chrootdir="/var/named" # Chroot directory (or "" not to auto-chroot it)
|
||||||
named_chroot_autoupdate="YES" # Automatically install/update chrooted
|
named_chroot_autoupdate="YES" # Automatically install/update chrooted
|
||||||
|
@ -13,12 +13,23 @@
|
|||||||
name="devd"
|
name="devd"
|
||||||
rcvar=`set_rcvar`
|
rcvar=`set_rcvar`
|
||||||
command="/sbin/${name}"
|
command="/sbin/${name}"
|
||||||
pidfile=/var/run/${name}.pid
|
|
||||||
|
|
||||||
start_precmd=${name}_prestart
|
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 ()
|
devd_prestart ()
|
||||||
{
|
{
|
||||||
|
find_pidfile
|
||||||
|
|
||||||
# If devd is disabled, turn it off in the kernel to avoid memory leaks.
|
# If devd is disabled, turn it off in the kernel to avoid memory leaks.
|
||||||
if ! checkyesno ${rcvar}; then
|
if ! checkyesno ${rcvar}; then
|
||||||
$SYSCTL hw.bus.devctl_disable=1
|
$SYSCTL hw.bus.devctl_disable=1
|
||||||
|
@ -112,8 +112,19 @@ named_reload()
|
|||||||
${command%/named}/rndc 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()
|
named_stop()
|
||||||
{
|
{
|
||||||
|
find_pidfile
|
||||||
|
|
||||||
# This duplicates an undesirably large amount of code from the stop
|
# 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,
|
# 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.
|
# and to give it a second chance in case rndc fails.
|
||||||
@ -156,6 +167,12 @@ create_file () {
|
|||||||
|
|
||||||
named_prestart()
|
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}"
|
command_args="-u ${named_uid:=root}"
|
||||||
|
|
||||||
if [ ! "$named_conf" = '/etc/namedb/named.conf' ]; then
|
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
|
required_dirs="$named_chrootdir" # if it is set, it must exist
|
||||||
|
|
||||||
pidfile="${named_pidfile:-/var/run/named/pid}"
|
|
||||||
named_confdir="${named_chrootdir}${named_conf%/*}"
|
named_confdir="${named_chrootdir}${named_conf%/*}"
|
||||||
|
|
||||||
run_rc_command "$1"
|
run_rc_command "$1"
|
||||||
|
39
etc/rc.subr
39
etc/rc.subr
@ -383,6 +383,45 @@ wait_for_pids()
|
|||||||
fi
|
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
|
# check_startmsgs
|
||||||
# If rc_quiet is set (usually as a result of using faststart at
|
# If rc_quiet is set (usually as a result of using faststart at
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
.\"
|
.\"
|
||||||
.\" $FreeBSD$
|
.\" $FreeBSD$
|
||||||
.\"
|
.\"
|
||||||
.Dd January 7, 2011
|
.Dd April 22, 2011
|
||||||
.Dt RC.CONF 5
|
.Dt RC.CONF 5
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
@ -1832,13 +1832,6 @@ is set to
|
|||||||
.Dq Li YES ,
|
.Dq Li YES ,
|
||||||
these are the flags to pass to
|
these are the flags to pass to
|
||||||
.Xr named 8 .
|
.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
|
.It Va named_uid
|
||||||
.Pq Vt str
|
.Pq Vt str
|
||||||
The user that the
|
The user that the
|
||||||
|
Loading…
Reference in New Issue
Block a user