|

楼主 |
发表于 2010-9-1 12:12:24
|
显示全部楼层
三步曲,第一步,创建/etc/rc.runlevel,属性-rwxr-xr-x,内容如下:#!/bin/bash
#
# /etc/rc.runlevel
# scripted by Bhoppi
#
. /etc/rc.conf
. /etc/rc.d/functions
run_hook runlevel_start
get_spec_daemons()
{
case "$1" in
2)
dmlst=(${DAEMON2[@]})
;;
3)
dmlst=(${DAEMON3[@]})
;;
4)
dmlst=(${DAEMON4[@]})
;;
5)
dmlst=(${DAEMON5[@]})
;;
*)
dmlst=()
;;
esac
}
runlvls="$(/sbin/runlevel)"
prelvl=${runlvls:0:1}
curlvl=${runlvls:2:3}
if in_array "$prelvl" 2 3 4 5; then
get_spec_daemons "$prelvl"
printhl "---- Stopping Runlevel $prelvl Daemons..."
let i=${#dmlst[@]}
while [ $i -gt 0 ]; do
let i=i-1
if [ "${dmlst[$i]#!}" = "${dmlst[$i]}" ]; then
ck_daemon ${dmlst[$i]#@} || stop_daemon ${dmlst[$i]#@}
fi
done
printhl "---- Stopping Completed"
fi
commonlvl=(35 53 23 24 25 32 34 42 43 45 52 54)
if ! in_array "$prelvl$curlvl" "${commonlvl[@]}"; then
case "$curlvl" in
[06])
. /etc/rc.shutdown
;;
[S1])
. /etc/rc.single
;;
[2345])
. /etc/rc.multi
;;
*)
;;
esac
fi
if in_array "$curlvl" 2 3 4 5; then
get_spec_daemons "$curlvl"
printhl "---- Starting Runlevel $curlvl Daemons..."
for daem in "${dmlst[@]}"; do
if [ "${daem#!}" = "${daem}" ]; then
if [ "${daem#@}" = "${daem}" ]; then
start_daemon ${daem}
else
start_daemon_bkgd ${daem#@}
fi
fi
done
printhl "---- Starting Completed"
run_hook runlevel_end
fi
# End of file
第二步,对/etc/inittab作少许变动,将原来的rs:S1:wait:/etc/rc.single
rm:2345:wait:/etc/rc.multi
rh:06:wait:/etc/rc.shutdown 改为rs:S1:wait:/etc/rc.runlevel
r2:2:wait:/etc/rc.runlevel
r3:3:wait:/etc/rc.runlevel
r4:4:wait:/etc/rc.runlevel
r5:5:wait:/etc/rc.runlevel
rh:06:wait:/etc/rc.runlevel
第三步,对/etc/rc.conf作少许改动,在原"DAEMONS=..."行的下面添加:DAEMON2=()
DAEMON3=(@laptop-mode @gpm)
DAEMON4=(network iptables dhcpd named postgresql samba httpd vsftpd postfix sshd)
DAEMON5=(dbus @hal networkmanager kdm) 各行的意思相信不用解释了,里边的内容要根据个人需要设定
而DAEMONS中只需保留各个Runlevel共同需要的daemon
最后重启或运行init q使设置生效 |
|