设为首页 收藏本站
查看: 847|回复: 0

Shell脚本安装成服务加入系统启动-service XX does not support chkconfig

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-6 09:55:08 | 显示全部楼层 |阅读模式
背景:Shell脚本是linux运维人员必备利器,怎么样把shell脚本安装成服务且加入系统启动,然后就可以使用服务来管理,这是一个很重要的问题。


当我们运行安装服务的命令时候,假设服务名为myservice

#chkconfig --add myservice

常常会出现

service myservice does not support chkconfig



下面讲解正确方法:



1.1给服务脚本添加注释。


#vim /etc/init.d/myservice

添加下面两句到 #!/bin/bash 之后。

# chkconfig: 2345 10 90
# description: myservice ....

第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺
省不在任何运行级启动,那么使用 - 代替运行级。第二行对服务进行描述,可以
用\ 跨行注释。

其中2345是默认启动级别,级别有0-6共7个级别。

  等级0表示:表示关机   

  等级1表示:单用户模式   

  等级2表示:无网络连接的多用户命令行模式   

  等级3表示:有网络连接的多用户命令行模式   

  等级4表示:不可用   

  等级5表示:带图形界面的多用户模式   

  等级6表示:重新启动

10是启动优先级,90是停止优先级,优先级范围是0-100,数字越大,优先级越低。


1.2  服务脚本必须存放在/etc/ini.d/目录下;

1.3 chkconfig --add servicename
    在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;
   
1.4 chkconfig --level 2345 servicename on      修改服务的默认启动等级。




二、 另外还要注意几个问题:


1)启动脚本的标准结构:


case "$1" in
    start)
        do start-thing;
        ;;
    stop)
        do stop-thing;
        ;;
    restart)
        do restart-thing;
        ;;
    ...
esac

你如果按这种结构写个启动脚本测试一下就会发现,若该脚本的软连接以S开头,则系统启动的时候
执行start-thing代码段,若该脚本的软连接以K开头的话,则系统启动时执行stop-thing代码段
(有一点儿例外的是运行级别0,因为0级别是关闭系统,所以/etc/rc0.d/下的以S开头的软连接
也执行stop-thing段)。是不是很智能化,所以如果可以的话启动脚本最好写标准一些。如果你非
写成普通的脚本,就几个命令,没有上面那个结构,建立以K或S开头的软连接会怎么执行呢?
答案是全部执行。



2)chkconfig

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。



使用语法:

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

chkconfig在没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否 在当前运行级启动。如果是,返回true,否则返回false。如果在服务名后面指定了on,off或者reset,那么chkconfig 会改变指定服务的启动信息。on和off分别指服务被启动和停止,reset指重置服务的启动信息,无论有问题的初始化脚本指定了什么。on和off开关,系统默认只对运行级3,4,5有效,但是reset可以对所有运行级有效。



使用范例:

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为开机运行服务,--level35表示操作只在等级3和5执行,on表示启动,off表示关闭

chkconfig mysqld on     #设定mysqld在各等级为on,“各等级”包括2、3、4、5等级



/etc目录下有一组rc开头目录,它们用来存放在各个运行级别下linux自动启动的服务:

/etc/rc0.d/ #运行模式0下需要启动的服务

/etc/rc1.d/ #运行模式1下需要启动的服务

/etc/rc2.d/ #运行模式2下需要启动的服务

/etc/rc3.d/ #运行模式3下需要启动的服务

/etc/rc4.d/ #运行模式4下需要启动的服务

/etc/rc5.d/ #运行模式5下需要启动的服务

/etc/rc6.d/ #运行模式6下需要启动的服务

这些目录中除README说明文档之外放的都是些软链接(符号链接),这些链接指向各服务的进程管理脚本,而这些进程管理脚本都放在/etc/init.d目录中.



  用chkconfig命令操作的添加或者删除开机自动启动服务程序,其实就是创建或删除这些目录中的软链接. 每个软链接的命名都是"大写S+运行顺序+脚本名称",里面有一个链接是"S20rc.local -> ../init.d/rc.local".打开它指向的脚本/etc/init.d/rc.local看一下,发现它里面调用了/etc/rc.local这个脚本.原来/etc/rc.local中的命令是在这儿执行的.

  如果把mysql服务的启动命令放进/etc/rc.local中,操作系统也会在执行这个列表的时候执行它,不过它的执行顺序是20,比排在前面的S17mysql还要晚一些~

chconfig --level 2345 puppet off 等价于 chkconfig puppet off (不用--level 指定级别时,默认是2345)

这条命令是设置 puppet 服务在 2345级别不自动启动,当执行这条命令时,会在

rc2.d rc3.d rc4.d rc5.d 这几个目录新建软连接K02puppet 从 /etc/rc.d/init/puppet 脚本

chkconfig puppet on 这个就是在2345级别时,开机自动启动

当执行这条命令时,会在

rc2.d rc3.d rc4.d rc5.d 这几个目录新建软连接S98puppet 从 /etc/rc.d/init/puppet 脚本

那这个 K02puppet S98puppet 中的 02 和 98 是怎么来的?

打开/etc/rc.d/init.d/puppet这个脚本文件,看前几行 如下:



#!/bin/bash

# puppet        Init script for running the puppetclient daemon

#

# Author:       Duane Griffin

#               David Lutterkort

#

# chkconfig: - 98 02

#

# description: Enables periodic systemconfiguration checks through puppet.

# processname: puppet

# config: /etc/sysconfig/puppet

特别是这行

# chkconfig: - 98 02

chkconfig 命令会读取这一行,来获取运行级别和那2个数字的,在这个脚本里面





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-240131-1-1.html 上篇帖子: shell脚本:脚本分析汇总ping日志文件 下篇帖子: 通过shell实现linux用户管理和监控 service support
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表