Linux(Centos)之chkconfig命令使用攻略及案例分析 [root@iZ25ja2kaemZ ss]# chkconfig --help chkconfig version 1.3.49.3 - Copyright (C) 1997-2000 Red Hat, Inc. This may be freely redistributed under the terms of the GNU Public License. usage: chkconfig [--list] [--type <type>] [name] chkconfig --list [name]:显示所有运行级系统服务的运行状态信息(on或off)。如果指定了name,那么只显示指定的服务在不同运行级的状态。参见案例一。 chkconfig --add <name> chkconfig --del <name> chkconfig --override <name> chkconfig [--level <levels>] [--type <type>] <name> <on|off|reset|resetpriorities>,参见案例三,案例四,案例五。 亚强整理: chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] 需要说明的是,level选项可以指定要查看的运行级而不一定是当前运行级。对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。 也就是说,chkconfig仅仅可以设置服务的启动运行级别,其作用仅仅在下次更换运行级别时有效,而不会立即重启或停止某个服务。-亚强 [root@iZ25ja2kaemZ ss]# 案例一:列出指定服务的运行级别信息 [root@iZ25ja2kaemZ ~]# chkconfig --list mysqld mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off 案例二:列出当前服务器所有被chkconfig管理的服务列表及其运行级别信息 [root@iZ25ja2kaemZ ~]# chkconfig --list abrt-ccpp 0:off 1:off 2:off 3:off 4:off 5:off 6:off abrtd 0:off 1:off 2:off 3:off 4:off 5:off 6:off acpid 0:off 1:off 2:off 3:off 4:off 5:off 6:off aegis 0:off 1:off 2:on 3:on 4:on 5:on 6:off agentwatch 0:off 1:off 2:on 3:on 4:on 5:on 6:off atd 0:off 1:off 2:off 3:off 4:off 5:off 6:off auditd 0:off 1:off 2:off 3:off 4:off 5:off 6:off blk-availability 0:off 1:on 2:off 3:off 4:off 5:off 6:off cpuspeed 0:off 1:on 2:off 3:off 4:off 5:off 6:off haldaemon 0:off 1:off 2:off 3:off 4:off 5:off 6:off htcacheclean 0:off 1:off 2:off 3:off 4:off 5:off 6:off httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off ip6tables 0:off 1:off 2:off 3:off 4:off 5:off 6:off iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off irqbalance 0:off 1:off 2:off 3:off 4:off 5:off 6:off kdump 0:off 1:off 2:off 3:off 4:off 5:off 6:off lvm2-monitor 0:off 1:on 2:off 3:off 4:off 5:off 6:off mdmonitor 0:off 1:off 2:off 3:off 4:off 5:off 6:off messagebus 0:off 1:off 2:off 3:off 4:off 5:off 6:off mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off netfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off nscd 0:off 1:off 2:on 3:on 4:on 5:on 6:off ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off ntpdate 0:off 1:off 2:off 3:off 4:off 5:off 6:off psacct 0:off 1:off 2:off 3:off 4:off 5:off 6:off quota_nld 0:off 1:off 2:off 3:off 4:off 5:off 6:off rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off rngd 0:off 1:off 2:off 3:off 4:off 5:off 6:off rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off smartd 0:off 1:off 2:off 3:off 4:off 5:off 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off svnserve 0:off 1:off 2:off 3:off 4:off 5:off 6:off udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off 案例三:省略--level参数,那么默认--level的值为2345.使用on快捷命令将,2,3,4,5运行级别设置为on状态。 [root@iZ25ja2kaemZ incar]# chkconfig --list httpd httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@iZ25ja2kaemZ incar]# chkconfig httpd on [root@iZ25ja2kaemZ incar]# chkconfig --list httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off 案例四:省略--level参数,那么默认--level的值为2345.使用off快捷命令将,2,3,4,5运行级别设置为off状态。 [root@iZ25ja2kaemZ test]# chkconfig --list mysqld mysqld 0:on 1:on 2:on 3:on 4:on 5:on 6:on [root@iZ25ja2kaemZ test]# chkconfig mysqld off [root@iZ25ja2kaemZ test]# chkconfig --list|grep mysqld mysqld 0:on 1:on 2:off 3:off 4:off 5:off 6:on 案例五:设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭。--level与reset不同,-level仅仅影响设置的当前级别,不影响其他运行级别的设置。比如案例--level 35 on ,仅仅将35级别设置为on,对于01246运行级别不做任何操作,即保持原状。 [root@iZ25ja2kaemZ test]# chkconfig --level 0123456 mysqld off [root@iZ25ja2kaemZ test]# chkconfig --list|grep mysqld mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@iZ25ja2kaemZ test]# chkconfig --level 35 mysqld on [root@iZ25ja2kaemZ test]# chkconfig --list|grep mysqld mysqld 0:off 1:off 2:off 3:on 4:off 5:on 6:off [root@iZ25ja2kaemZ test]# 案例六:重置某个服务的运行级别。即将目的运行级别设置为某个服务首次安装在当前linux系统时的运行级别,即服务初始化时的运行级别。reset可以对所有运行级有效。 [root@iZ25ja2kaemZ test]# chkconfig --list|grep postfix postfix 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@iZ25ja2kaemZ test]# chkconfig postfix reset#不同的服务初始化时的启动级别不同,因此运行该命令后,其结果运行级别会出现不同的结果。效果:从/etc/rc.d/init.d/postfx文件中的# chkconfig: 2345 80 30行,读取postfix服务安装时的运行级别,该reset指令影响所有7个启动级别,即如读取/etc/rc.d/init.d/postfx文件中的# chkconfig: 2345 80 30行,那么将2345级别设置为启动on,将016设置为不启动off。 分2步骤,第一首先将/etc/rc.d/rc*.d中有关该服务postfix邮件服务的所有软链接全部删除。第二:将rc2.d,rc3.d,rc4.d,rc5.d目录中写入到S80postfix,在rc0.d,rc1.d,rc6.d中写入K30postfix.d.可以看到reset是对全部7个运行级别目录进行重写,文件/etc/rc.d/init.d/postfx启动脚本中标记为启动的写入启动软链接到指定运行级别目录,其他运行级目录写入不启动软链接。 [root@iZ25ja2kaemZ test]# chkconfig --list postfix postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off 案例七:将某个服务添加到chkconfig命令符管理的服务的列表中; [root@iZ25ja2kaemZ rc.d]# chkconfig --add postfix #添加某个服务到chkconfig管理范围,注意:该命令行执行的前提条件是,在/etc/rc.d/init.d/目录下存在以相应服务的名字命名的服务,比如要添加postfix服务,那么必须存在/etc/rc.d/init.d/postfix启动脚本(通常yum install postfix邮件服务后,那么该yum命令会自动添加该服务启动脚本到/etc/rc.d/init.d/目录),否则--add命令执行失败。命令执行成功后,我们可以用 chkconfig --list 可以查询到添加的服务。并可以通过chkconfig的其他参数来管理该服务的运行级别。需要注意的是,如果 chkconfig --list 列表中已经存在某个服务,那么你再次运行 chkconfig --add 服务名,那么--add不会有任何效果,即--add不会重新加载该服务,不会将当前服务的运行级别重置为初始化值(即/etc/rc.d/init.d/服务名,文件中的# chkconfig: 2345 80 30行指定的级别)。关于--add添加服务后的默认启动级别,该参数是从/etc/rc.d/init.d/服务名,文件中的# chkconfig: 2345 80 30行读取的。 案例八:从chkconfig管理列表中删除某个服务,删除后该服务将在任意启动级别都不会自动启动。因为该chkconfig --del 将/etc/rc.d/rc*.d下的所有与删除的服务相关的文件软链接全部删除掉了。而linux系统的启动引导程序启动哪些服务是从/etc/rc.d/rc*.d目录下寻找的。当然该操作不会将/etc/rc.d/init.d下面的该服务的启动脚本文件删除,因此我们还可以使用chkconfig --add重新将该服务添加到chkconfig的运行级管理列表。 [root@iZ25ja2kaemZ rc.d]# chkconfig --del postfix #从chkconfig --list列表中删除指定服务,执行后该服务不能再通过chkconfig参数来操作运行级别。 下面的资料为chkconfig命令内部代码对linux系统目录的操作效果,主要涉及的目录为/etc/rc.d/目录,如需要可以参考,其他关于系统引导以及运行级信息可以参考本手册<linux学习引导-对/etc/rc.d/init.d&rc*.d分析,系统引导,运行级别,configure命令>-王亚强: chkconfig相关命令参数,对/etc/rc.d/目录文件的修改,添加,删除操作。 1. 添加某个服务到某个运行级别自动启动或不启动:chkconfig --add postfix,运行该命令后,我们可以用chkconfig的各种参数来控制操作该服务的运行级别。 注意:一般来讲,你用yum等命令安装某个服务后,那么会自动运行一遍chkconfig --add postfix命令。只有将某个服务加入到/etc/rc.d/rc*.d目录下,那么该服务才会在对应级别运行,否则不会自动启动。 注意:该命令行执行的前提条件是,在/etc/rc.d/init.d/目录下存在以相应服务的名字命名的服务,比如要添加postfix服务,那么必须存在/etc/rc.d/init.d/postfix启动脚本(通常yum install postfix邮件服务后,那么该yum命令会自动添加该服务启动脚本到/etc/rc.d/init.d/目录),否则--add命令执行失败。 根据/etc/rc.d/init.d/postfix启动脚本中定义的启动级别,将创建7个软链接分别写入到/etc/rc.d/rc*.d(*为从0到6)共计7个目录中,并根据软链的命名确定某个目录(每个目录代表一个启动级别需要启动哪些服务)下是启动postfix服务还是不启动postfix服务。一般以软链接命名为标记,如软链以S开头,那么代表当前启动级别启动该服务,如果以K开头,那么表明当前启动级别不启动当前服务。 比如:/etc/rc.d/init.d/postfix中文件中有行# chkconfig: 2345 80 30,即安装postfix服务后,默认启动级别为2345 我们执行chkconfig --add postfix 命令效果为:读取/etc/rc.d/init.d/postfix文件的默认启动级别为2345,在/etc/rc.d/rc2.d,/etc/rc.d/rc3.d,/etc/rc.d/rc3.d,/etc/rc.d/rc4.d目录下写入软链接文件S80postfix,在/etc/rc.d/rc0.d,/etc/rc.d/rc1.d,/etc/rc.d/rc6.d,写入K30postfix。 我们执行下面的命令看看效果: [root@iZ25ja2kaemZ rc.d]# find ./ -name '*postfix*' | sort -n ./init.d/postfix [root@iZ25ja2kaemZ rc.d]# chkconfig --add postfix [root@iZ25ja2kaemZ rc.d]# find ./ -name '*postfix*' | sort -n ./init.d/postfix ./rc0.d/K30postfix ./rc1.d/K30postfix ./rc2.d/S80postfix ./rc3.d/S80postfix ./rc4.d/S80postfix ./rc5.d/S80postfix ./rc6.d/K30postfix [root@iZ25ja2kaemZ rc.d]#
2. 从运行级别目录/etc/rc.d/rc*.d删除某个服务:chkconfig --del postfix,执行该命令后该服务的启动级别将不能再被chkconfig命令来进行修改。 执行效果为:将/etc/rc.d/rc*.d下关于该指定服务的所有软链接全部删除,但是不会删除位于/etc/rc.d/init.d/目录下的该服务的启动脚本文件。参见下面的代码: [root@iZ25ja2kaemZ rc.d]# chkconfig --list postfix postfix 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@iZ25ja2kaemZ rc.d]# find ./ -name '*postfix*' | sort -n ./init.d/postfix ./rc0.d/K30postfix ./rc1.d/K30postfix ./rc2.d/K30postfix ./rc3.d/K30postfix ./rc4.d/K30postfix ./rc5.d/K30postfix ./rc6.d/K30postfix [root@iZ25ja2kaemZ rc.d]# chkconfig --del postfix [root@iZ25ja2kaemZ rc.d]# find ./ -name '*postfix*' | sort -n ./init.d/postfix [root@iZ25ja2kaemZ rc.d]# chkconfig --list postfix service postfix supports chkconfig, but is not referenced in any runlevel (run 'chkconfig --add postfix') [root@iZ25ja2kaemZ rc.d]# chkconfig --add postfix [root@iZ25ja2kaemZ rc.d]# chkconfig --list postfix #亚强,可以看到这里加载的是/etc/rc.d/init.d/postfix启动脚本中的默认级别,而不是前面删除该启动脚本时候的运行级别, postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@iZ25ja2kaemZ rc.d]# find ./ -name '*postfix*' | sort -n ./init.d/postfix ./rc0.d/K30postfix ./rc1.d/K30postfix ./rc2.d/S80postfix ./rc3.d/S80postfix ./rc4.d/S80postfix ./rc5.d/S80postfix ./rc6.d/K30postfix [root@iZ25ja2kaemZ rc.d]# 3. 重置某个服务的运行级别为安装该服务时,默认的运行级别。chkconfig postfix reset 效果:从/etc/rc.d/init.d/postfx文件中的# chkconfig: 2345 80 30行,读取postfix服务安装时的运行级别。 分2步骤,第一首先将/etc/rc.d/rc*.d中有关该服务postfix邮件服务的所有软链接全部删除。第二:将rc2.d,rc3.d,rc4.d,rc5.d目录中写入到S80postfix,在rc0.d,rc1.d,rc6.d中写入K30postfix.d.可以看到reset是对全部7个运行级别目录进行重写,文件/etc/rc.d/init.d/postfx启动脚本中标记为启动的写入启动软链接到指定运行级别目录,其他运行级目录写入不启动软链接。 案例: [root@iZ25ja2kaemZ rc.d]# find ./ -name '*postfix*' | sort -n ./init.d/postfix ./rc0.d/S80postfix ./rc1.d/S80postfix ./rc2.d/S80postfix ./rc3.d/S80postfix ./rc4.d/S80postfix ./rc5.d/S80postfix ./rc6.d/S80postfix [root@iZ25ja2kaemZ rc.d]# chkconfig postfix reset [root@iZ25ja2kaemZ rc.d]# find ./ -name '*postfix*' | sort -n ./init.d/postfix ./rc0.d/K30postfix ./rc1.d/K30postfix ./rc2.d/S80postfix ./rc3.d/S80postfix ./rc4.d/S80postfix ./rc5.d/S80postfix ./rc6.d/K30postfix [root@iZ25ja2kaemZ rc.d]# 4修改某个服务的启动级别。chkconfig --level 23 postfix on/off;如果省略--level参数,那么该参数值在centos6下默认为2345。即chkconfig --level 2345 postfix on/off等价于chkconfig postfix on/off; 该level参数仅仅对涉及到的运行级别有效,不影响其他运行级别。 如: chkconfig --level 23 postfix on #将postfix服务的23启动级别设置为自动启动,01456启动级别不受到该命令的任何影响。与reset不同,reset会重置所有的7个级别为安装服务时的默认值(/etc/rc.d/init.d/postfix文件中有记录该值# chkconfig: 2345 80 30),即仅仅对设计到的rc2.d,rc3.d运行级目录将postfix服务的相关软链删除,然后重新写入S80postfix软链接。 chkconfig --level 23 postfix off #将postfix服务的23启动级别设置为不自动启动,01456启动级别不受到该命令的任何影响。与reset不同,reset会重置所有的7个级别为安装服务时的默认值(/etc/rc.d/init.d/postfix文件中有记录该值# chkconfig: 2345 80 30)),即仅仅对设计到的rc2.d,rc3.d运行级目录将postfix服务的相关软链删除,然后重新写入K30postfix软链接。。 案例: [root@iZ25ja2kaemZ rc.d]# find ./ -name '*postfix*' | sort -n ./init.d/postfix ./rc0.d/K30postfix ./rc1.d/K30postfix ./rc2.d/K30postfix ./rc3.d/K30postfix ./rc4.d/K30postfix ./rc5.d/K30postfix ./rc6.d/K30postfix [root@iZ25ja2kaemZ rc.d]# chkconfig --level 23 postfix on [root@iZ25ja2kaemZ rc.d]# find ./ -name '*postfix*' | sort -n ./init.d/postfix ./rc0.d/K30postfix ./rc1.d/K30postfix ./rc2.d/S80postfix ./rc3.d/S80postfix ./rc4.d/K30postfix ./rc5.d/K30postfix ./rc6.d/K30postfix
|