linux sysvinit与upstart(3)

本文地址:http://blog.csdn.net/spch2008/article/details/9471209


sysvinit时,启动一个程序通过执行该脚本即可,如/etc/init.d/spch2008 start

upstart环境下,配置文档写在/etc/init下,所以/etc/init.d/spch2008 start命令将失效。

为了兼容,采用如下方式:

root@nova-controller:/etc/init.d# ln -s  /lib/init/upstart-job spch2008

spch2008.conf内容如下:

start on runlevel [2345]
stop  on runlevel [016]

script
        mkdir -p /home/spch2008
        chown root:root /home/spch2008
end script

这样,就可以通过sysvini的方式启动程序啦。

root@nova-controller:/home# /etc/init.d/spch2008 start
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service spch2008 start

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start spch2008
spch2008 start/running, process 23276


/lib/init/upstart-job脚本:

#!/bin/sh -e


INITSCRIPT="$(basename "$0")"
JOB="${INITSCRIPT%.sh}"

COMMAND="$1"

case $COMMAND in
status)
  
    $COMMAND "$JOB"
    ;;
start|stop)
   
    $COMMAND "$JOB"
    ;;
restart)
   
    if status "$JOB" 2>/dev/null | grep -q ' start/'; then
        RUNNING=1
    fi
    if [ -n "$RUNNING" ] ; then
        stop "$JOB"
    fi

    start "$JOB"
    ;;
esac

只看一些关键点:INITSCRIPT为获取的文件名,如果输入的是spch2008.sh,则JOB去除.sh即为spch2008。

/etc/init.d/spch2008.sh status     ==》  INITSCRIPT:spch2008.sh   JOB:spch2008

/etc/init.d/spch2008 status          ==》  INITSCRIPT:spch2008   JOB:spch2008

COMMAND记录命令,如start,status,stop。

根据COMMAND转到相应的分支中去,如status,则实际转换成了status spch2008

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值