脚本设计:脚本中必须包含个函数,start(),stop(),restart(),reload(),例如,键入service dhcpd start命令,会调用start函数,restart()和reload()很简单,stop函数中kill进程,并杀出pid文件,这里主要写start函数的设计思路,先检查是否有配置文件,若没有的话,直接退出并打印信息;检查指定路径是否有租约文件,若没有,创建;检查是否有pid文件,若有的话,说明dhcpd服务已经启动,退出并打印信息;调用dhcpd启动文件,-4表示是dhcpv4,-q表示自动发现接口,-cf指定conf文件路径,-lf指定租约文件路径
内容如下
#=============dhcpd content====================
config_file=/etc/dhcpd.conf
pidfile=/var/run/dhcpd.pid
lease_file=/var/db/dhcpd.leases
./etc/rc.d/init.d/functions
./etc/sysconfig/network
if [ ! -e $config_file ]; then
echo " No config file at $config_file"
exit 0
fi
RETVAL=0
start(){
if [ ! -e $lease_file ]; then
echo " Creating $lease_file"
touch $lease_file
#elif [ -f $pid_file ]; then
#PID=`cat $pidfile`
#echo " ISC-DHCPD already running: $PID"
#exit 2;
else
echo -n $"Starting ISC-DHCPD: "
/usr/local/sbin/dhcpd eth0 -4 -q -cf /etc/dhcpd.conf -lf /usr/local/zddi/dhcp/db/dhcpd.leases
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/dhcpd
return $RETVAL
fi
}
stop() {
echo -n $"Stopping ISC-DHCPD: "
killall dhcpd
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/run/dhcpd.pid /var/lock/subsys/dhcpd
return $RETVAL
}
restart() {
stop
start
}
reload() {
echo -n $"Reloading dhcpd: "
killproc dhcpd -USR2
RETVAL=$?
echo
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status dhcpd
;;
restart)
restart
;;
condrestart)
[ -f /var/lock/subsys/dhcpd ] && restart || :
;;
reload)
reload
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
exit 1
esac
exit $?
#==============dhcpd content==========
service dhcpd start后效果如下