Redis启动脚本


一、Linux启动脚本原理
1、init和运行级别
以CentOS为例,init有7个运行级别(run level),打开/etc/inittab文件能看到:
# Default runlevel. The runlevels used by RHS are:
# 0 – halt (Do NOT set initdefault to this)
# 1 – Sing user mode
# 2 – Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 – Full multiuser mode
# 4 – unused
# 5 – X11
# 6 – reboot (Do NOT set initdefault to this)
/etc/inittab文件规定了系统进入到每一个运行级别时需要运行的命令,也规定了系统默认运行级别:
id:3:initdefault:
在机器引导时,系统进入默认运行级别,并执行相应级别所需命令。
2、服务启动脚本
/etc/init.d中存放了所有的启动脚本,我们可以通过如下命令来启动某个服务:
#/etc/init.d/iptables start
或者
#service iptables start
以此来启动iptables服务。
虽然/etc/init.d目录中存放了所有启动脚本,但是系统引导时,init并不直接在/etc/init.d目录中查找各个服务的启动脚本,而是在/etc/rc.d目录中查找,该目录中包含了代表不同的init启动级别的子目录即rcx.d目录:

rcx.d目录中存放都是/etc/rc.d/init.d目录中脚本的符号链接,以rc3.d为例:


这些符号链接都以S或K开头,随后跟一个数字以及脚本所控制的服务名称,如K05rabbitmq-server,当init从低运行级别向高运行级别切换时,其按照数字递增的顺序运行所有以S开头的脚本,S=start,即启动脚本所控制的服务,按照数字递减的顺序杀死以K开头的脚本,K=kill,即杀死脚本所控制的服务。
脚本启动或者杀死的顺序由数字来控制,当然,我们也可以改变这些:

#ln –s /etc/init.d/rabbitmq-server S70rabbitmq-server
或者
#ln –s /etc/init.d/rabbitmq-server K70rabbitmq-server

二、Redis启动脚本
有了上面那些理论支撑,接下来就亲自操刀编写一个Redis启动脚本。
1、创建启动脚本

假设服务名称为redis-server,可执行文件路径为/usr/local/bin,配置文件为redis.conf,配置文件路径为/etc,进程ID存放文件为redis.pid,进程ID存放文件路径为/var/run,脚本文件为redisd,脚本文件存放路径为/etc/init.d,服务描述为redis daemon,当然这些信息可以根据自己需要定制,具体脚本如下:
#!/bin/sh

#chkconfig: 345 86 14

#description: Startup and shutdown script for Redis

 

PROGDIR=/usr/local/bin

PROGNAME=redis-server

DAEMON=$PROGDIR/$PROGNAME

CONFIG=/etc/redis.conf

PIDFILE=/var/run/redis.pid

DESC="redis daemon"

SCRIPTNAME=/etc/init.d/redisd

 

start()

{

         if test -x $DAEMON

         then

        echo -e "Starting $DESC: $PROGNAME"

                   if $DAEMON $CONFIG

                   then

                            echo -e "OK"

                   else

                            echo -e "failed"

                   fi

         else

                   echo -e "Couldn't find Redis Server ($DAEMON)"

         fi

}

 

stop()

{

         if test -e $PIDFILE

         then

                   echo -e "Stopping $DESC: $PROGNAME"

                   if kill `cat $PIDFILE`

                   then

                            echo -e "OK"

                   else

                            echo -e "failed"

                   fi

         else

                   echo -e "No Redis Server ($DAEMON) running"

         fi

}

 

restart()

{

    echo -e "Restarting $DESC: $PROGNAME"

    stop

         start

}

 

list()

{

         ps aux | grep $PROGNAME

}

 

case $1 in

         start)

                   start

        ;;

         stop)

        stop

        ;;

         restart)

        restart

        ;;

         list)

        list

        ;;

 

         *)

        echo "Usage: $SCRIPTNAME {start|stop|restart|list}" >&2

        exit 1

        ;;

esac

exit 0

点击img_e25d4fb2f8de1caf41a735ec53088516.pngredisd.rar可以下载完整脚本。
2、增加服务并开机启动
#!/bin/sh

 

cp ./redisd /etc/rc.d/init.d/redisd

chmod +x /etc/rc.d/init.d/redisd

chkconfig --add redisd

chkconfig --level 345 redisd on

chkconfig --list redisd


点击img_e25d4fb2f8de1caf41a735ec53088516.pngdistrbuteDaemon.rar可以下载完整脚本。


执行该脚本后,就可以开始start|stop|restart|list你的服务了。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值