分享

Linux(Centos)之chkconfig命令使用攻略及案例分析

 强商网络科技 2022-05-30 发布于河北

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

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多