1、使用工具:chkconfig 管理/etc/rc.d/init.d或/etc/init.d/目錄下的服務(wù)啟動腳本。
要在服務(wù)啟動腳本開頭添加兩行:
# chkconfig: 2345 88 12
# description: XXXXXXXXX XXXXXX
這樣就可以使用工具:chkconfig 來管理服務(wù)啟動腳本了。
使用工具:chkconfig 工具的好處:
沒有使用該工具,我們要讓一個服務(wù)在2、3、4、5級別上都運行,在其它級別上都不運行。要手動設(shè)置很多符號連接:
在/etc/rc.d/rc1.d 執(zhí)行:[root@node2 rc1.d]# ln -sv K12nrped ../init.d/nrped
在/etc/rc.d/rc2.d 執(zhí)行:[root@node2 rc2.d]# ln -sv S88nrped ../init.d/nrped
在/etc/rc.d/rc3.d 執(zhí)行:[root@node2 rc3.d]# ln -sv S88nrped ../init.d/nrped
在/etc/rc.d/rc4.d 執(zhí)行:[root@node2 rc4.d]# ln -sv S88nrped ../init.d/nrped
在/etc/rc.d/rc5.d 執(zhí)行:[root@node2 rc5.d]# ln -sv S88nrped ../init.d/nrped
在/etc/rc.d/rc6.d 執(zhí)行:[root@node2 rc6.d]# ln -sv K12nrped ../init.d/nrped
添加這些符號鏈接之后。運行級別改變時,該服務(wù)就會授腳本 rc 的控制。------> rc 腳本就會根據(jù)對應(yīng)運行級別目錄(/etc/rc.d/rc$runlevel.d)的符號標(biāo)識:S、K 關(guān)閉、啟動對應(yīng)的服務(wù)。這樣就實現(xiàn)了設(shè)置一個服務(wù)是否在一個運行級別上運行。
工具:chkconfig 就會根據(jù)服務(wù)運行腳本的 #chkconfig 行來,自動設(shè)置上述的符號鏈接。
[root@node2 rc3.d]# chkconfig on
就會根據(jù):# chkconfig: 2345 88 12 創(chuàng)建各運行級別上的符號鏈接。
2、為了使用工具: service 管理服務(wù) 腳本最少需要接收 start 和 stop 選項;
服務(wù)啟動腳本要根據(jù)用戶輸入的選項:
stop -----> 關(guān)閉服務(wù)
start -----> 啟動服務(wù)
reload -----> 告訴程序重讀配置文件,改變程序的運行狀態(tài)
restart ----> 重新啟動服務(wù)
3、Lock directory for RedHat / SuSE
RedHat 管理服務(wù)的一種機制,要在/var/lock/subsys/目錄下創(chuàng)建一個鎖文件。
[root@node2 rc.d]# vim /etc/init.d/nrped
#!/bin/bash
# chkconfig: 2345 89 11
# description: NRPE DAENON
NRPE=/usr/local/nagios/bin/nrpe
OPTIONS="-c /etc/nagios/nrpe.cfg -d"
lockfile=/var/lock/subsys/nrped
prog=nrped
RETVAL=0
. /etc/rc.d/init.d/functions
start() {
echo -n $"Starting $prog: "
daemon $NRPE $OPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] touch ${lockfile}
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc -d -10 $NRPE
RETVAL=$?
echo
[ RETVAL = 0 ] rm -f ${lockfile}
}
reload() {
echo -n $"Reloading $prog: "
killproc $NRPE -HUP
echo
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
reload)
reload
;;
status)
status $NRPE
;;
*)
echo "Usage: $0 start|stop|restart|reload|status"
;;
esac
exit 0