1. 服务概述
    在linux操作系统下,经常需要创建一些服务,这些服务被做成shell脚本,这些服务需要在系统启动的时候自动启动,关闭的时候自动关闭。

    需要自动启动的脚本/etc/rc.d/init.d目录下,然后用命令chkconfig --add
    filename将自动注册开机启动和关机关闭。实质就是在rc0.d-rc6.d目录下生成一些文件连接,这些连接连接到/etc/rc.d
    /init.d目录下指定文件的shell脚本。

    在文章linux下Oracle自动启动与停止(一)linux下Oracle自动启动与停止(二) 对创建服务有一些描述。

  2. 手工创建服务
    在/etc/rc.d/init.d目录下创建shell脚本,文件名auto_run。
    设置脚本的运行权限chmod +x auto_run。
    然后在rc0.d-rc6.d目录下分别创建文件连接。
    ln -s /etc/rc.d/init.d/auto_run /etc/rc.d/rc2.d/S99auto_run
    ln -s /etc/rc.d/init.d/auto_run /etc/rc.d/rc3.d/S99auto_run
    ln -s /etc/rc.d/init.d/auto_run /etc/rc.d/rc5.d/S99auto_run
    ln -s /etc/rc.d/init.d/auto_run /etc/rc.d/rc0.d/K01auto_run
    ln -s /etc/rc.d/init.d/auto_run /etc/rc.d/rc6.d/K01auto_run

    这样系统在启动的时候,就会运行auto_run 并加上start参数,等同于执行命令auto_run start。
    在系统关闭的时候,就会运行auto_run,并加上stop参数,等同于运行命令auto_run stop。

    创建连接的6条命令可以用命令chkconfig --add auto_run来完成,这样就简单多了,还不容易出错。
    下面就介绍一下chkconfig命令。

  3. chkconfig命令用法
    语法:
    chkconfig --list [name]
    chkconfig --add name
    chkconfig --del name
    chkconfig [--level levels] name <on|off|reset>
    chkconfig [--level levels] name

    说明:
    chkconfig提供一种简单的命令行工具来帮助管理员对/etc/rc[0-6].d目录层次下的众多的符号链接进行直接操作。
    此命令使用是由chkconfig命令在IRIX操作系统提供授权。不用在/etc/rc[0-6].d目录下直接维护配置信息,而是直接在/etc/rc[0-6]下管理链接文件。在运行级别的目录下的配置信息通知在将会初始启动哪些服务。
    Chkconfig有五个很明确的功能:为管理增加一个新的功能、删除一个功能、列出当前服务的启动信息、改变一个服务的启动信息和检测特殊服务的启动状态。
    当chkconfig没有参数运行时,它将显示其使用方法。如果只给出了一个服务名,它将检测这个服务名是否已经被配置到了当前运行级别中。如果已经配置,返回真,否则返回假。--level选项可以被用做查询多个运行级别而不仅仅是一个。
           如果在服务名之后指定了on,、off或reset,chkconfig将改变指定服务的启动信息。On或off标记服务被打开或停止,尤其是在运行级别被改变时。Reset标记重置服务的启动信息。
           默认情况下,on或off选项仅对2、3、4、5有影响,而 reset影响所有的运行级。--level选项可以被用于指定哪个运行级别接收影响。
    注意:对于每个服务,每一个运行级都有一个开始角本和一个结束角本。当开或关一个运行级时,init不会重新开始一个已经运行的服务,也不会重新停止一个未运行的服务。
    选项:
           --level levels
                  指定一个运行级别适合的操作。范围为0-7。
           --add name
                  增加一个新的服务。
           --del name
                  删除一个服务
           --list name
                  显示服务的情况
    RUNLEVEL FILES

    个通过chkconfig管理的服务在其init.d目录下的角本中都需要两行或多行的注释。第一行告诉chkconfig在默认情况下什么运行级别的服
    务可以开始,也就是所说的开始或结束的优先级别。如果服务没有默认的级别,建造将在所有运行级别中启动。a
    将用于代替运行级列表(不太确定,测试zabbix的启动脚本,K只在0/1/6有,S只在2/3/4/5有)
    。第二个注释行包括对此服务的描述,可以通过反斜线符号扩展为多行。

    示例,auto_run的前三行如下:
    #!/bin/sh
    #chkconfig: 2345 80 90
    #description:auto_run
    第一行,告诉系统使用的shell,所以的shell脚本都是这样。

    二行,chkconfig后面有三个参数2345,80和90告诉chkconfig程序,需要在rc2.d~rc5.d目录下,创建名字为
    S80auto_run的文件连接,连接到/etc/rc.d/init.d目录下的的auto_run脚本。第一个字符是S,系统在启动的时候,运行脚
    本auto_run,就会添加一个start参数,告诉脚本,现在是启动模式
    。同时在rc0.d和rc6.d目录下,创建名字为K90auto_run的
    文件连接,第一个字符为K,个系统在关闭系统的时候,会运行auto_run,添加一个stop,告诉脚本,现在是关闭模式。

    注意上面的三行是中,地二,第三行是必须的,否则在运行chkconfig --add auto_run时,会报错。

  4. 常见的错误
    服务不支持 chkconfig”:
    请注意检查脚本的前面,是否有完整的两行:
    #chkconfig: 2345 80 90
    #description:auto_run
    在脚本前面这两行是不能少的,否则不能chkconfig命令会报错误。
    如果运行chkconfig老是报错,如果脚本没有问题,我建议,直接在rc0.d~rc6.d下面创建到脚本的文件连接来解决,原理都是一样的。
  5. -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  6. 第一部分是注释章节,说明此脚本可以被chkconfig工具管理. 下面是一个例子:
    #!/bin/bash## chkconfig 345 10 90
    # description This is where you put a description of your service
    此例中, 在chkconfig后面的数字345表示是默认运行的级别. 在这个例子中, 此服务将会在级别3 , 4, 5启动.
    数字10代表启动的优先级别. 数字越低,优先级越高. 数字90代表关闭的优先级别. 数字越低,优先级越高.

linux开机启动服务和chkconfig使用方法(自定义服务路径启动)的更多相关文章

  1. linux自定义开机启动服务和chkconfig使用方法

    linux自定义开机启动服务和chkconfig使用方法 1. 服务概述在linux操作系统下,经常需要创建一些服务,这些服务被做成shell脚本,这些服务需要在系统启动的时候自动启动,关闭的时候自动 ...

  2. (转)linux自定义开机启动服务和chkconfig使用方法

    原文:https://www.cnblogs.com/jimeper/archive/2013/03/12/2955687.html linux自定义开机启动服务和chkconfig使用方法 1. 服 ...

  3. linux开机启动服务和chkconfig使用方法(转)

    每个被chkconfig 管理的服务需要在对应的/etc/rc.d/init.d 下的脚本加上两行或者更多行的注释. 第一行告诉 chkconfig 缺省启动的运行级以及启动和停止的优先级.如果某服务 ...

  4. linux系统chkconfig使用方法及服务开机启动

    一.基础知识 有关linux系统开机过程.运行等级,执行权限请看另一篇:linux系统启动过程及运行等级详解. 本篇文章实践的系统:centos6.5 二.创建服务 通过之前的说明,我们知道了如果需要 ...

  5. Linux 启动脚本及chkconfig命令之自启动服务

    有时我们会碰到这样的情况,系统启动的时候报一大堆无法连接mysql的错误,问题在mysql数据库还没有启动的时候已经启动了一些需要连接mysql数据库的服务.这样我们就得修改启动顺序,把需要连接mys ...

  6. linux 开机自启动软件(包含xampp方法)

    linux设置apache和mysql: linux开启启动的程序一般放在/etc/rc.d/init.d/里面,/etc/init.d/是其软连接. mysql设为linux服务 cp /usr/l ...

  7. 关于linux开机进入grub问题的解决方法

    用还是用ls (hd0,X)/grub命令查看每个盘里面的内容, 情况一 :如果你是在/boot/grub这个目录下找到的 grub rescue>root=(hd0,9)         gr ...

  8. Ubuntu学习总结-12 linux 平台及 windows 平台 mysql 重启方法

    一 Linux下重启MySQL的正确方法 1.通过rpm包安装的MySQL   service mysqld restart2.从源码包安装的MySQL   // linux关闭MySQL的命令$my ...

  9. Ambari 自定义服务集成原理介绍

    之前,在 github 上开源了 ambari-Kylin 项目,可离线部署,支持 hdp 2.6+ 及 hdp 3.0+ .github 地址为:https://github.com/8418090 ...

随机推荐

  1. sublime text下代码太长brackethighlighter不能正确显示闭合高亮的解决方法

    用brackethighlighter显示高亮一直都有这个问题...也没在网上找到解决方案,就一直凑合着用,今天翻着配置文件玩,改了参数发现问题解决了...... 修改search_threshold ...

  2. struts2动态方法

    动态方法调用 在Struts2中动态方法调用有三种方式,动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多 第一种方式:指定method属性 这种方式我们前面已经用到过, ...

  3. SpringMvc_@RequestMapping设置Router Url大小写不敏感

    http://stackoverflow.com/questions/4150039/how-can-i-have-case-insensitive-urls-in-spring-mvc-with-a ...

  4. 43.Android之ListView中BaseAdapter学习

    实际开发中个人觉得用的比较多是BaseAdapter,尽管使用起来比其他适配器有些麻烦,但是使用它却能实现很多自己喜欢的列表布局,比如ListView.GridView.Gallery.Spinner ...

  5. 【poj1012】 Joseph

    http://poj.org/problem?id=1012 (题目链接) 半年前的考试题..任然清晰的记得那次差10分就AK... 题意 约瑟夫环,有前k个好人,后k个坏人,要求使得后k个坏人先死的 ...

  6. POJ1737 Connected Graph

    Connected Graph Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3156   Accepted: 1533 D ...

  7. HackerRank Ice Cream Parlor

    传送门 Ice Cream Parlor Authored by dheeraj on Mar 21 2013 Problem Statement Sunny and Johnny together ...

  8. 通过HTTP协议实现多线程下载

    1. 基本原理,每条线程从文件不同的位置开始下载,最后合并出完整的数据. 2. 使用多线程下载的好处     下载速度快.为什么呢?很好理解,以往我是一条线程在服务器上下载.也就是说,对应在服务器上, ...

  9. leach和leach-c协议仿真

    http://blog.csdn.net/codingkid/article/details/7215216 1.复制leach_test为leach-c_test,修改里面的文件夹和输出文件名.并且 ...

  10. 如何通俗地理解 Gradle

    http://www.zhihu.com/question/30432152 一句话概括就是:依赖管理和任务执行. 像Ruby里面的bundler+rake,像iOS中的cocoapods,像node ...