将自己写的脚本添加至开机自启动服务和chkconfig的原理

创建脚本测试

[root@anuo ~]# vim anuo.sh  --创建个脚本
# !/bin/bash
# chkconfig: 35 53 88   --指定3和5级别启动 53的启动的顺序    88是关闭的顺序
# description: is anuo  --可以随便说点啥, 最好的说明这个脚本的用途啥的。
echo Anuo Come on   --脚本的内容
[root@anuo ~]# mv anuo.sh /etc/init.d/      --必须将脚本放到/etc/init.d/目录下
[root@anuo ~]# chmod +x /etc/init.d/anuo.sh     --别忘记给脚本加执行权限
[root@anuo ~]# chkconfig --add anuo.sh      --添加开机自启动
[root@anuo ~]# chkconfig --list | grep anuo.sh      --可以看到开启级别的启动
anuo.sh         0:关闭    1:关闭    2:关闭    3:启用    4:关闭    5:启用    6:关闭

--这里的3和5级别的启动也就对应了上面的第一个35

小测试

[root@anuo ~]# ll /etc/rc.d/rc3.d/|grep anuo.sh     
lrwxrwxrwx  1 root root 17 5月  12 19:10 S53anuo.sh -> ../init.d/anuo.sh

--查看到3级别启动的文件里一个S53anuo.sh的链接文件(S表示开启,53也就对应了配置文件里的53的启动的顺序)

[root@anuo ~]# chkconfig anuo.sh off    --设置开机不启动
[root@anuo ~]# ll /etc/rc.d/rc3.d/|grep anuo.sh     
lrwxrwxrwx  1 root root 17 5月  12 19:30 K88anuo.sh -> ../init.d/anuo.sh

--再次查看发现S53anuo.sh的链接文件没有了,却多了个K88anuo.sh的链接文件(K表示不开启 88对应的是配置文件里的88关闭的顺序)

小结:要把脚本放到/etc/init.d/目录下并给执行权限,当chkconfig设置开机自启动时候会在相应的启动级别的文件里创建S开头的链接文件,同时会删除以K开头的对应的链接文件,反之也亦然。(也可以手动删除、创建链接文件也是一样的效果)

精简开机自启动

方法1思路:找出需要关闭的的服务将其关闭

[root@anuo ~]# chkconfig --list|grep "3:on"|egrep -v "network|rsyslog|crond|sysstat|sshd"|awk '{print "chkconfig",$1,"off"}'|bash

[root@anuo ~]# chkconfig --list | grep "3:on"   --查看剩下开启的
crond           0:off   1:off   2:off   3:on    4:off   5:on    6:off
network         0:off   1:off   2:off   3:on    4:off   5:on    6:off
rsyslog         0:off   1:off   2:off   3:on    4:off   5:on    6:off
sshd            0:off   1:off   2:off   3:on    4:off   5:on    6:off
sysstat         0:off   1:on    2:off   3:on    4:off   5:on    6:off

方法2思路:将所有服务全部关闭自启动,再开启需要开启的服务。

[root@anuo ~]# LANG=en_SU.UTF-8     --调整字符集
[root@anuo ~]# echo $LANG
en_SU.UTF-8

[root@anuo ~]# for i in `chkconfig --list |grep "3:on" | awk '{print $1}'`;do chkconfig --level 2345 $i off ;done
[root@anuo ~]# chkconfig --list | grep "3:on"   --查看没有就说明全部关闭成功
[root@anuo ~]# for i in network rsyslog crond sysstat sshd;do chkconfig --level 35 $i on;done
[root@anuo ~]# chkconfig --list | grep "3:on"   --查看开启也成功了
crond           0:off   1:off   2:off   3:on    4:off   5:on    6:off
network         0:off   1:off   2:off   3:on    4:off   5:on    6:off
rsyslog         0:off   1:off   2:off   3:on    4:off   5:on    6:off
sshd            0:off   1:off   2:off   3:on    4:off   5:on    6:off
sysstat         0:off   1:on    2:off   3:on    4:off   5:on    6:off