linux下自启动服务的管理及chkconfig的应用(ubuntu 和 RedHat为例)

Linux的七个运行级别原理概述

    运行级别是操作系统当前正在运行的功能级别。Linux运行级别是从0到6,具有不同的功能。这些级别定义在/ect/inittab文件中(redhat是在这个文件里,Ubuntu没有这个文件)。这个文件是init程序寻找的主要文件,最先运行的服务是那些放在/ect/rc.d目录下的文件。

linux下自启动服务的管理及chkconfig的应用(ubuntu 和 RedHat为例)_第1张图片

图1  inittab文件内容

一、Linux的运行级别:

1)Linux下的7个运行级别:

0:系统停机状态,系统默认运行级别不能设置为0,否则不能正常启动,机器关闭。

1:单用户工作状态,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录。
2:多用户状态,没有NFS支持。
3:完整的多用户模式,有NFS,登陆后进入控制台命令行模式。
4:系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
5:X11控制台,登陆后进入图形GUI模式,XWindow系统。
6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。运行init6机器就会重启。标准的Linux运行级别为3或5

2)运行级别原理:

1.在目录/etc/rc.d/init.d下有许多服务器脚本程序,一般称为服务(service)

2.在/etc/rc.d下有7个名为rcN.d的目录,对应系统的7个运行级别

3. rcN.d目录下都是一些符号链接文件,这些链接文件都指向init.d目录下的service脚本文件,命名规则为K+nn+服务名或S+nn+服务名,其中nn为两位数字表示启动或停止顺序,由脚本中的chkconfig那一行决定,如图2所示,345表示运行级为3、4、5;99表示启动优先级(1-99),01表示停止顺序(1-99);K表示kill,停止进程;S表示start,启动进程。如图3所示,在/etc/rcN.d/可以看到链接到/etc/init.d/chcstartx1的文件。

linux下自启动服务的管理及chkconfig的应用(ubuntu 和 RedHat为例)_第2张图片

图2  chcstarx1脚本


图3 启动脚本的软链接

4.系统会根据指定的运行级别进入对应的rcN.d目录,并按照文件名顺序检索目录下的链接文件:对于以K(Kill)开头的文件,系统将终止对应的服;对于以S(Start)开头的文件,系统将启动对应的服务

5.图1所示为运行级别0的/etc/rc.d/rc0.d/下的文件,全部为kill服务。

linux下自启动服务的管理及chkconfig的应用(ubuntu 和 RedHat为例)_第3张图片

图4  /etc/rc.d/rc0.d/下的软链接

6.查看运行级别用:runlevel

7.进入其它运行级别用:initN,如果init3则进入终端模式,init5则又登录图形GUI模式

8.另外init0为关机,init6为重启系统标准的Linux运行级别为3或5,如果是3的话,系统就在多用户状态;如果是5的话,则是运行着XWindow系统。不同的运行级别有不同的用处,也应该根据自己的不同情形来设置。例如,如果丢失了root口令,那么可以让机器启动进入单用户状态来设置。在启动后的lilo提示符下输入:

init=/bin/shrw

    这样就可以使机器进入运行级别1,并把root文件系统挂为读写。它会绕过所有系统认证,让你使用passwd程序来改变root口令,然后启动到一个新的运行级。

 

二、chkconfig用法

    chkconfig命令可以用来检查、设置系统的各种服务

使用语法:
    chkconfig[--add][--del][--list][
系统服务]或chkconfig[--level<等级代号>][系统服务][on/off/reset]

    参数用法:
    --add:
增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
    --del:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。
    --level<等级代号>:指定读系统服务要在哪一个执行等级中开启或关毕。使用范例:

    chkconfig --list列出所有的系统服务
    chkconfig --add httpd
增加httpd服务
    chkconfig --del httpd 删除httpd服务
    chkconfig --level httpd 2345 on 把httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态。

    注意:

    只执行chkconfig–add npcd,结果345的状态为on了,因为脚本里面已经包含了345。也就是上面说的实际上相当于执行了两条命令。在这里就可以直接执行servicenpcd start了。

    如果没有出现这组数据(345)或者出现了-,就说明在执行完chkconfig –addnpcd 后一定要执行chkcofnig –level 345nagios on这条命令后才能保证服务在机器重启后依然有效。

 

三、如何增加开机自启动服务

    下面以增加自启动脚本chcstartx1为例来说明:

1)将写好的chcstartx1脚本放入/etc/init.d/下面,并chmod +x /etc/init.d/chcstartx1.

脚本为:

linux下自启动服务的管理及chkconfig的应用(ubuntu 和 RedHat为例)_第4张图片
图5  chcstartx1脚本

 

2)chkconfig –add chcstartx1此时可以看到/etc/rcN.d/已有文件和/etc/init.d/chcstartx1建立软链接。

如图所示3所示

3)chkconfig  chcstartx1  on 使系统在运行级3、4、5自启动

4)reboot,启动时,发现红色框中即是脚本打出的内容。

如图6所示

linux下自启动服务的管理及chkconfig的应用(ubuntu 和 RedHat为例)_第5张图片

图6 开机自启动服务启动过程

四、启动顺序与依赖关系

    在应用的时候经常碰到过这样的情况,系统启动的时候报一大堆无法连接mysql的错误,问题就是,在mysql数据库存还没有启动的时候已经启动了一些需 要连接mysql数据库的服务。这样我们就得修改启动顺序来把需要连接mysql数据库的服务放到mysql服务启动之后再启动。这样我们就得修改启动脚本。一般是在/etc/rc.d/init.d下面。

参考文献

http://blog.sina.com.cn/s/blog_4c704cf70100mn6p.html

http://blog.chinaunix.net/uid-25572546-id-2777974.html

你可能感兴趣的:(linux实践)