chkconfig命令详解
- 使用语法:
chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]
chkconfig在没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回true,否则返回false。如果在服务名后面指定了on,off或者reset,那么chkconfi 会改变指 定服务的启动信息。on和off分别指服务被启动和停止,reset指重置服务的启动信息,无论有问题的初始化脚本指定了什么。on和off开关,系统默认只对运行级3,4,5有效,但是reset可以对所有运行级有效。
- 使用参数:
chkconfig --list [name]:显示所有运行级系统服务的运行状态信息(on或off)。如果指定了name,那么只显示指定的服务在不同运行级的状态。
chkconfig --add name:增加一项新的服务。chkconfig确保每个运行级有一项启动(S)或者杀死(K)入口。如有缺少,则会从缺省的init脚本自动建立。
chkconfig --del name:删除服务,并把相关符号连接从/etc/rc[0-6].d删除。
chkconfig [--level levels] name:设置某一服务在指定的运行级是被启动,停止还是重置。
- 使用范例:
chkconfig --list #列出所有的系统服务
chkconfig --add httpd #增加httpd服务
chkconfig --del httpd #删除httpd服务
chkconfig --level httpd 2345 on #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态
chkconfig --list #列出系统所有的服务启动情况
chkconfig --list mysqld #列出mysqld服务设置情况
chkconfig --level 35 mysqld on #设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭
chkconfig mysqld on #设定mysqld在各等级为on,“各等级”包括2、3、4、5等级
- chkconfig命令的原理:
[root@BASE ~]# ll /etc/init.d lrwxrwxrwx. 1 root root 11 Jun 13 21:10 /etc/init.d -> rc.d/init.d [root@BASE ~]# 当我们将服务的启动脚本放到/etc/init.d这个目录的时候,其实是放在了rc.d/init.d中 [root@BASE ~]# ll /etc/rc.d/ total 60 drwxr-xr-x. 2 root root 4096 Sep 23 21:51 init.d -rwxr-xr-x. 1 root root 2617 Nov 23 2013 rc -rwxr-xr-x. 1 root root 220 Sep 8 09:18 rc.local -rwxr-xr-x. 1 root root 19688 Nov 23 2013 rc.sysinit drwxr-xr-x. 2 root root 4096 Sep 27 10:56 rc0.d drwxr-xr-x. 2 root root 4096 Sep 27 10:56 rc1.d drwxr-xr-x. 2 root root 4096 Sep 27 10:56 rc2.d drwxr-xr-x. 2 root root 4096 Sep 27 10:56 rc3.d drwxr-xr-x. 2 root root 4096 Sep 27 10:56 rc4.d drwxr-xr-x. 2 root root 4096 Sep 27 10:56 rc5.d drwxr-xr-x. 2 root root 4096 Sep 27 10:56 rc6.d [root@BASE ~]# rc1-6.d这些目录对应的是不同的运行级别,系统在开机的时候会加载这些目录中的文件,来实现在不同的级别是否启动服务。 [root@BASE ~]# ll /etc/rc.d/rc2.d/ total 0 lrwxrwxrwx. 1 root root 16 Jun 13 21:13 K01smartd -> ../init.d/smartd lrwxrwxrwx 1 root root 13 Jun 18 11:57 K05atd -> ../init.d/atd lrwxrwxrwx. 1 root root 16 Jun 13 21:13 K10psacct -> ../init.d/psacct lrwxrwxrwx. 1 root root 19 Jun 13 21:12 K10saslauthd -> ../init.d/saslauthd lrwxrwxrwx. 1 root root 18 Jun 13 21:13 K15svnserve -> ../init.d/svnserve lrwxrwxrwx 1 root root 19 Jun 18 11:57 K16abrt-ccpp -> ../init.d/abrt-ccpp ........ lrwxrwxrwx 1 root root 17 Aug 21 14:34 S13rpcbind -> ../init.d/rpcbind lrwxrwxrwx. 1 root root 14 Jun 13 21:13 S55sshd -> ../init.d/sshd lrwxrwxrwx 1 root root 16 Sep 27 10:56 S64mysqld -> ../init.d/mysqld lrwxrwxrwx. 1 root root 15 Jun 13 21:12 S90crond -> ../init.d/crond lrwxrwxrwx. 1 root root 11 Jun 13 21:12 S99local -> ../rc.local
当将某一个服务设置为开机启动的时候,系统会自动创建一个软连接来指向rc.d/init.d中该服务的启动脚本,所以如果想使用chkconfig来管理服务的开机启动的时候必须先要将服务的启动脚本放到rc.d/init.d中去。
如果将某一个服务设置为2级别on,系统就会在/etc/rc.d/rc2.d/中创建一个以S开头的软连接,如果设置为off,就会创建一个以K开头连接文件。
- 原理演示:
Mysqld服务在2级别是开启的
[root@BASE ~]# chkconfig|grep mysql mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
在rc2.d目录中将mysqld的软连接删除。
[root@BASE ~]# rm /etc/rc.d/rc2.d/S64mysqld
可以看到mysqld服务在2级别的变为为off
[root@BASE ~]# chkconfig|grep mysql mysqld 0:off 1:off 2:off 3:on 4:on 5:on 6:off [root@BASE ~]#
如何设置脚本使其能够通过chkconfig管理
需要在脚本中(往往在脚本的开头)加上如下的内容
#chkconfig: 2345 21 60
2345 表示默认的都在那个级别开机启动
21 表示启动顺序
60 表示关闭的顺序
提示:在设置顺序的时候注意不要和之前的软件冲突,同时要注意依赖软件的之间的先后顺序,例如nfs和rpcbind。