On some systems, the named boot script provided with the bind rpms don't seem to reliably reload the named program. You can obtain a new named boot script by running the following (RedHat):
cd /etc/init.d mv named named.backup wget http://www.directadmin.com/named chmod 755 named /sbin/chkconfig named reset
This boot script uses are more direct method of reloading named.
Note, if you're using debian, use:
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# for a chrooted server: "-u bind -t /var/lib/named"
# Don't modify this line, change or create /etc/default/bind9.
OPTIONS=""
PID_FILE=/var/run/bind/run/named.pid
case "$1" in
start)
echo -n "Starting domain name service: named"
modprobe capability >/dev/null 2>&1 || true
# dirs under /var/run can go away on reboots.
mkdir -p /var/run/bind/run
chmod 775 /var/run/bind/run
chown root:bind /var/run/bind/run >/dev/null 2>&1 || true
if [ ! -x /usr/sbin/named ]; then
echo "named binary missing - not starting"
exit 1
fi
if start-stop-daemon --start --quiet --exec /usr/sbin/named \
--pidfile /var/run/bind/run/named.pid -- $OPTIONS; then
if [ -x /sbin/resolvconf ] ; then
echo "nameserver 127.0.0.1" | /sbin/resolvconf -a lo
fi
fi
echo "."
;;
stop)
echo -n "Stopping domain name service: named"
#if [ -x /sbin/resolvconf ]; then
# /sbin/resolvconf -d lo
#fi
#/usr/sbin/rndc stop
kill `cat $PID_FILE`
echo "."
;;
reload)
#/usr/sbin/rndc reload
kill -HUP `cat $PID_FILE`
;;
restart|force-reload)
$0 stop
sleep 2
$0 start
;;
*)
echo "Usage: /etc/init.d/bind {start|stop|reload|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
if you're using FreeBSD, use:
#!/bin/sh
#bootscript for named
# Source function library.
. /usr/local/etc/rc.d/functions
pidfile=/var/run/named.pid
if [ ! -e $pidfile ]; then
pidfile=/var/run/named/pid
fi
start() {
echo -n "Starting Named: ";
COUNT=`ps ax | grep /usr/sbin/named | grep -v grep | grep -c named`
if [ "$COUNT" -gt 0 ]; then
echo "named is already running.";
exit 0;
fi
daemon /usr/sbin/named -u bind
RETVAL=$?
if [ "$RETVAL" = "0" ] && touch /var/spool/lock/named
then
echo -e "\t\t[ OK ]";
else
echo -e "\t\t[ FAILED ]";
fi
}
stop() {
echo -n "Stopping Named: "
#killall named 2> /dev/null
PIDS=`ps ax | grep /usr/sbin/named | grep -v grep | cut -d\ -f1`
kill -9 $PIDS
RETVAL=$?
if [ "$RETVAL" = "0" ] && rm -f /var/spool/lock/named
then
echo -e "\t\t[ OK ]";
else
echo -e "\t\t[ FAILED ]";
fi
sleep 1;
killall -9 named 2> /dev/null
}
restart() {
echo -n "Restarting Named: "
/usr/sbin/ndc restart > /dev/null
RETVAL=$?
if [ "$RETVAL" = "0" ];
then
echo -e "\t\t[ OK ]";
else
echo -e "\t\t[ FAILED ]";
fi
}
reload() {
echo -n "Reloading Named: "
#/usr/sbin/ndc reload
kill -HUP `cat $pidfile`
RETVAL=$?
if [ "$RETVAL" = "0" ];
then
echo -e "\t\t[ OK ]";
else
echo -e "\t\t[ FAILED ]";
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
#restart
stop
start
;;
reload)
#reload
stop
start
;;
status)
status named
;;
*)
echo "Usage: named {start|stop|restart|reload|status}"
exit 1
esac
exit $RETVAL