> CentOS > CentOS入门 >

CentOS里chkconfig命令详解

Chkconfig
名称:chkconfig -  updates and queries runlevel information forsystem  services更新查询系统服务的运行级别信息。
语法: chkconfig [--add][--del][--list]  [系统服务]
chkconfig [--level<等级代号>]  [系统服务]  [on/off/reset]
功能简述:
Chkconfig 用来查询更新系统服务的运行级别信息,只是简单的改变了符号链接(软链接)通过查看/etc/rc3.d/可以发现都是软链接,并且都是直到/etc/init.d/下的执行文件。Chkconfig 也就是通过管理这些软链接来管理系统运行级别的服务。
注意:当切换系统运行级别的时候,系统根据启动脚本,来重新加载
参数:
--add  增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
--del  删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。
--level<等级代号>  指定读系统服务要在哪一个执行等级中开启或关毕。
-------------------------
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
------------------------
--list 显示系统服务所有的运行级别的服务状况,如果有制定具体服务那么只显示某个服务的系统运行级别


1)增加一个系统服务
1、先将执行w文档放入/etc/init.d/目录中
2、chkconfig–add servicename
在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rcN.d中赋予K/S入口了?
实例测试:
[root@bogon init.d] #chkconfig  --add mysshd
[root@bogon init.d]# chkconfig --list mysshd
mysshd          0:off   1:off  2:on    3:on    4:on   5:on    6:off
默认就会在这几个级别中启动?我是复制了sshd的执行脚本,这个会有关系?重新复制了其他的执行脚本,之后确实真的有关系。那如果要是我自己创建的执行脚本呢?
另:发现我自己写的一个ping的服务添加不了,提示servicemyping does not support chkconfig。
原来原因是这个:
  运行级文件:每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用- 代替运行级。第二行对服务进行描述,可以用\跨行注释。
例如,random.init包含三行:
# chkconfig: 2345 20 80   [这个就是默认在2345运行级别是开启的,20为启动顺序,80为停止顺序]
# description: Saves and restores system entropy pool for \
# higher quality random number generation
只是这个优先级别是如何来工作的呢??
老师的解答:20 启动顺序,是服务在/etc/rcx.d文件里面的顺序。这组数字就是系统启动的时候服务启动的优先级---数字越小,优先级越高,也就是启动的时候数值越小越先启动
80 停止顺序,这组数值就是系统关闭的时候关闭服务的优先级---数字越小,优先级越高,也就是关闭的时候数值越小越先关闭-----从老师的聊天记录中得到答案。


2)删除一个服务
[root@bogon init.d]# chkconfig  --del mynfs
[root@bogon init.d]# ls my*
mynfs myping  mysshd
原本的执行脚本不会被删除。


3)罗列所有的系统服务
Chkconfig --list


4)管理某个服务在某个运行级别的状态
Chkconfig  --level 2345  servicesname   on|off [挺常用的]
配置开机启动将启动脚本放在/etc/rc.d/rc.local下就可以启动了。编辑rc.local这个文件。例如讲 mysql加入到开机启动
(1)编辑rc.local文件
#vi/etc/rc.d/rc.local
(2)加入如下启动命令
/etc/rc.d/init.d/mysqldstart
注意:如果在/etc/rc.d/rc.local中写入了自动启动,即使chkconfig --level mysqld offmysql也会自动启动。


5)系统优化:通过脚本关闭自己所不需要的服务
1.列出我们需要的服务
chkconfig --list | egrep "syslog|cron|network|ssh" | awk '{print $1}'
2.关闭所有服务
for n  in'chkconfig --list | awk '{print $1}'';do chkconfig $n off; done
3.仅开启我们需要的服务
for n in 'chkconfig --list| egrep "syslog| crond|network|ssh" | awk'{print $1}'';do chkconfig --level 3 $n on ;done
思路:先是关闭所有的服务,那么就需要先获取所有服务名称然后循环关闭,之后获取我们需要的开启的服务名称,之后循环开启我们指定的运行级别。之后要自己写的时候,也可以按照事情细分的过程来写,调试。



--------------------------------------------------------------------------------

《开机启动》
将一个服务或脚本设置为开机启动,可以直接在rc.local中去添加启动命令。

《系统优化—开机启动服务》
系统进开通我们需要的几个服务,通过命令或者脚本来进行统一设置。
1、awk获取服务名,for in ‘’;do ;done 关闭所有服务
2、for in ;do ;done 仅开启我们需要的几个服务。


======================后续自己简单小结=============
chkconfig 主要就是来配置系统服务启动顺序的,跟windows的系统启动项管理一样那,只不过就是命令操作而已嘛。实际上的文件就是存放在,操作系统里面的嘛。放在哪里?就是放在/etc/init.d/里面的嘛,这个就是真正的执行文件。但是那么多个运行级别不会都有这些执行文件吧,当然不是,其实不同的运行级别就是通过类似软链接的形式链接到init.d里面的执行文件,并且设置开关启动顺序而已。所以我们命令chkconfig就能够控制系统开机启动项了。
chkconfig -add servername  就是添加
chkconfig --delete servername  删除
chkconfig --list     罗列
chkconfig --level 2 servername on|off
其实还是挺简单的用法嘛,跟windows对应起来比较容易记得住。
(责任编辑:IT)