zoukankan      html  css  js  c++  java
  • hkconfig 用法详解

    转载https://www.cnblogs.com/bulh/articles/9680596.html

    chkconfig --level 345 nfs off
    --add name 这个选项增加一项新的服务,chkconfig 确保每个运行级有一项 启动(S) 或者 杀死(K) 入口。如有缺少,则会从缺省的init 脚本自动建立。
    --del name 用来删除服务,并把相关符号连接从 /etc/rc[0-6].d 删除。

    每个被chkconfig 管理的服务需要在对应的init.d 下的脚本加上两行或者更多行的注释。
    第一行告诉 chkconfig 缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。
    第二行对服务进行描述,可以用跨行注释。

    例如,random.init 包含三行:
    # chkconfig: 2345 20 80
    # description: Saves and restores system entropy pool for
    # higher quality random number generation.
    表明 random 脚本应该在运行级 2,3,4,5 启动,启动优先权为20,停止优先权为80。



    实例介绍: 安装Apache-ActiveMQ

    #!/bin/bash
    #
    # chkconfig: 35 66 34
    # description: Apache ActiveMQ
    #

    . /etc/rc.d/init.d/functions

    ACTIVEMQ_USER=activemq
    WORK_DIR=apache-activemq-5.4.2

    case "$1" in
      start)
            su - ${ACTIVEMQ_USER} -c "cd ${WORK_DIR}; bin/activemq start"
            ;;
      stop)
            su - ${ACTIVEMQ_USER} -c "cd ${WORK_DIR}; bin/activemq stop"
            ;;
      restart|reload)
            su - ${ACTIVEMQ_USER} -c "cd ${WORK_DIR}; bin/activemq restart"
            ;;
      status)
            su - ${ACTIVEMQ_USER} -c "cd ${WORK_DIR}; bin/activemq status"
            ;;
      *)
            echo $"Usage: $0 {start|stop|restart|reload}"
            exit 2
    esac

    exit $RETVAL

    将此脚本cp到/etc/init.d/里面后,cp activemq /etc/init.d/
    运行:
    chkconfig --add <script_name>
    chkconfig --add activemq
    #这里的
    script_name要与/etc/init.d/下的相同。添加后,此命令会根据你在脚本中定义的三项数字来设定:
    1)35 :runlevel,
    2)66 :启动顺序
    3)34 :shutdown顺序

    chkconfig --add 其实就是执行了下面的语句:
    ln -s /etc/rc.d/init.d/activemq /etc/rc.d/rc3.d/S66activemq 
    ln -s /etc/rc.d/init.d/activemq /etc/rc.d/rc0.d/K34activemq
    # 大写的S,代表start,其后紧跟启动顺序数字,然后是service name. 大写的K,代表kill,K或S后面的数字表示执行顺序,数字小的先执行。
    # ls /etc/rc.d/rc0.d/ -l|grep act  
    lrwxrwxrwx 1 root root 18 Jun 28 15:17 K34activemq -> ../init.d/activemq

    chkconfig --add activemq 我怎么没看到添加K34activemq的链接呢? 是要执行
    chkconfig --level 35 activemq off 后才有:
    # ll /etc/rc.d/rc3.d/|grep acti
    lrwxrwxrwx 1 root root 18 Jun 28 15:59 K34activemq -> ../init.d/activemq
    并且同时将删除启动链接.

    如果你要删除/etc/init.d/下面的脚本,chkconfig --del 即可。
    但是你不想删除该脚本,仅仅是让它不要开机启动,出了上面的chkconfig off命令外,也可以直接将
    /etc/rc.d/rc[2-5].d/下面对应的S开头的链接改名为小写s开头即可.


    系统在进入一个运行级别时,首先将该运行级别对应的目录中以K开头的脚本按设定顺序执行,然后再将以S开头的脚本按顺序执行。

    ===============================================

    关机执行任务与开机有点儿不同,很多人以为运行级别目录里以K开头的会在关机时执行,其实不然,(2)里面已经说的很清楚了,正确的设置关机执行任务的步骤如下:

    1. 将要执行的任务携程脚本,加上可执行权限,放在/etc/init.d目录中如/etc/init.d/stopftp.sh
    2. cd到关闭系统所对应的运行级别目录/etc/rc0.d目录中,看一下S后面的数字,选取一个闲置的合适的数字
    3. 建立从/etc/init.d/stopftp.sh到/etc/rc0.d的软连接,代码如下:

    4. sudo ln -s /etc/init.d/stopftp.sh /etc/rc0.d/S24stopftp

    这样就可以了,如果想在执行重启的时候也执行这个脚本,就用同样的方式建立一个到/etc/rc6.d/的软连接。

    (5) 启动脚本的写法

    用编辑器随便打开一个/etc/init.d目录里的启动脚本,会发现主代码段都是下面这种结构:

    ...
    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开头的软连接会怎么执行呢?答案是全部执行。


    http://cqulpj.blogbus.com/logs/68406641.html
    ============================================
    linux不能自动关闭rc0.d目录下K开头程序的解决
    以前找了很久,都没找到不能自动关闭k开头程序的解决办法,今天无意间看到一篇文章。试验了下,果然灵。
    步骤如下:
    先写一个脚本放在/etc/rc.d/init.d下,chmod -f 777  , 再
    ln -s /etc/rc.d/init.d/script_name   /etc/rc.d/rc0.d/K01script_name 
    ln -s /etc/rc.d/init.d/script_name  /etc/rc.d/rc6.d/K01script_name,同时也要
     ln -s 到 /etc/rc.d/rc3.d/S99script_name 与/etc/rc.d/rc5.d/S99script_name。
      K开头的代表系统关闭的时候执行,S开头的代表开机的时候执行。注意服务器脚本编写的规范,因为有K开通的软链接并不一定会在关机的时候自动去执行,这是为什么呢?刚开始一直没搞明白,后来从网上看到,执行K脚本的时候会查询/var/lock/subsys/下是否有与K开头脚本同名的空文件名, 如果没有就不去执行,所以要按照服务器脚本编写的规范,启动的时候要在/var/lock/subsys/先touch一个与K01后面同名的空文件.同 时也要调用/etc/rc.d/init.d/functions能够接受start与stop命令信号,具体可以参考/etc/rc.d/rc文件

    用/etc/rc.d/init.d/functions能够接受start与stop命令信号的意思是指
    你在/etc/init.d/中的那个程序可以接受start和stop参数

     
  • 相关阅读:
    [j2me]KSoap2在Nokia真机上可能导致SymbianOS error 28
    [J2ME]Nokia播放音乐时发生MediaException的解决办法
    [j2me]利用JLayerMECLDC0.2播放MP3的试验[1]
    [j2me]手机也可以玩播客(Podcast)! Geek开发说明[开源]
    [JavaME]手机申请移动分配的动态IP(3)?
    [流媒体]实例解析MMS流媒体协议,下载LiveMediaVideo[1][修正版,增加了带宽测试包]
    [JavaME]手机申请移动分配的动态IP(2)?
    [JavaME]手机是否能够申请到动态IP?
    [收藏]MIDlet如何签名的tutorial
    [流媒体]实例解析MMS流媒体协议,下载LiveMediaVideo[3]
  • 原文地址:https://www.cnblogs.com/faberbeta/p/13558366.html
Copyright © 2011-2022 走看看