脚本功能:

实现redis单机多实例情况下的正常启动、关闭、重新启动单个redis实例。完毕系统标准服务的下面经常使用功能:  start|stop|status|restart

注:redis程序代码屏蔽了HUP信号。不支持在线重载配置文件,故去掉reload功能。

本脚本优化了redis停止和重新启动逻辑,解决原redis脚本关闭时会造成数据丢失问题。

脚本名称:

redis           #在多实例里能够按实例port,如:redis-6001命名,以区分不同实例

脚本使用方法:

1.在/etc/rc.d/init.d/文件夹下新建redis文件,将脚本内容拷贝进去

2.  chkconfig --add redis   #注冊服务

3. 、4、5级别执行

4.本人redis程序安装在/usr/local/redis文件夹下,配置为/usr/local/redis/bin/redis.conf,如安装在其它文件夹,请自行改动

脚本參数:

redis -p [port]  [start|stop|status|restart]

參数说明:

-p [port] : 指定redis实例的端口,用于多实例的server

start:启动指定port的Redis服务

stop:停止指定port的Redis服务

status:进程状态

restart:先关闭Redis服务,再启动Redis服务

注:不指定port时,脚本默认指定启动6379port的redis

使用方法实例:

service redis -p 6381 start  #启动6381port实例的redis

/etc/init.d/redis  start  #默认启动6379port实例的redis

脚本内容:

#!/bin/bash

#chkconfig: 2345 55 25

#description: Starts,stops and restart the redis-server

#Ver:1.1  

#Write by ND chengh(200808)

#usage: ./script_name -p [port] {start|stop|status|restart}

# Source function library.

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

# Source networking configuration.

. /etc/sysconfig/network

# Check networking is up.

[ "$NETWORKING" = "no" ] && exit 0

RETVAL=0

REDIS_PORT=6379

PID=

if [ "$1" = "-p" ]; then

    REDIS_PORT=$2

    shift 2

fi

REDIS_DIR="/usr/local/redis"

REDIS="${REDIS_DIR}/bin/redis-server"

PROG=$(basename $REDIS)

CONF="${REDIS_DIR}/bin/redis-${REDIS_PORT}.conf"

if [ ! -f $CONF ]; then

   if [ -f "${REDIS_DIR}/bin/redis.conf" ];then

      CONF="${REDIS_DIR}/bin/redis.conf"

   else

      echo -n $"$CONF not exist.";warning;echo

      exit 1

   fi

fi

PID_FILE=`grep "pidfile" ${CONF}|cut -d ' ' -f2`

PID_FILE=${PID_FILE:=/var/run/redis.pid}

LOCKFILE="/var/lock/subsys/redis-${REDIS_PORT}"

if [ ! -x $REDIS ]; then

    echo -n $"$REDIS not exist.";warning;echo

    exit 0

fi

start() {

echo -n $"Starting $PROG: "

    $REDIS $CONF

    RETVAL=$?

if [ $RETVAL -eq 0 ]; then

        success;echo;touch $LOCKFILE

    else

        failure;echo

    fi

    return $RETVAL

}

stop() {

echo -n $"Stopping $PROG: "

if [ -f $PID_FILE ] ;then

       read PID <  "$PID_FILE" 

    else 

       failure;echo;

       echo -n $"$PID_FILE not found.";failure;echo

       return 1;

    fi

if checkpid $PID; then

     kill -TERM $PID >/dev/null 2>&1

        RETVAL=$?

if [ $RETVAL -eq 0 ] ;then

                success;echo 

                echo -n "Waiting for Redis to shutdown .."

         while checkpid $PID;do

                 echo -n "."

                 sleep 1;

                done

                success;echo;rm -f $LOCKFILE

        else 

                failure;echo

        fi

    else

        echo -n $"Redis is dead and $PID_FILE exists.";failure;echo

        RETVAL=7

    fi    

    return $RETVAL

}

restart() {

    stop

    start

}

rhstatus() {

    status -p ${PID_FILE} $PROG

}

hid_status() {

    rhstatus >/dev/null 2>&1

}

case "$1" in

    start)

        hid_status && exit 0

        start

        ;;

    stop)

        rhstatus || exit 0

        stop

        ;;

    restart)

        restart

        ;;

    status)

        rhstatus

        RETVAL=$?

;;

    *)

        echo $"Usage: $0 -p [port] {start|stop|status|restart}"

        RETVAL=1

esac

exit $RETVAL

转载自:http://blog.csdn.net/chhxo/article/details/8673020

版权声明:本文博主原创文章,博客,未经同意不得转载。

Linux下一个Redis启动/关闭/重新启动服务脚本的更多相关文章

  1. Linux下的nginx启动、重新启动

    nginx的启动命令是: /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -c制定配置文件的路径,不加-nginx会自动 ...

  2. linux下写tomcat启动,重启的脚本

    启动: #bash/bin cd /finance/ LANG="en_US.UTF-8" export LANG /finance/tomcat8-finance/bin/cat ...

  3. Linux 下Tomcat的启动、关闭、杀死进程

    Linux下Tomcat的启动.关闭.杀死进程 打开终端 cd /java/tomcat #执行 bin/startup.sh #启动tomcat bin/shutdown.sh #停止tomcat ...

  4. windows下安装Redis并部署成服务

    windows下安装Redis并部署成服务 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 一:下载 下载地址: windows版本: http ...

  5. Linux 下安装redis

    记录一下linux下的安装步骤,还是比较复杂的 1. 下载redis-2.8.19.tar.gz: ftp传到linux01上: 解压: tar –zxvf redis-2.8.19.tar.gz 2 ...

  6. Linux下配置redis,c#简单调用

    redis比较流行的nosql库: 我这里测试本机window系统,虚拟机安装linux系统,linux系统部署redis,windwo系统,c#调用linux系统的redis 第一步:linux下安 ...

  7. Linux下更改oracle客户端字符集和服务端字符集

    from:http://blog.csdn.net/chid/article/details/6166506 Linux 下更改 oracle 客户端字符集和服务端字符集 1.Linux 下更改 or ...

  8. Linux下安装Redis及搭建主从

    Linux下安装Redis 首先在官网下载对应版本的redis包,这里本人使用的是redis-4.0.8.tar.gz.   然后在服务器中存放redis包的路径下执行tar –vxf redis-4 ...

  9. linux 下安装redis以及php Redis扩展

    [php] view plaincopy在CODE上查看代码片派生到我的代码片 linux 下安装redis以及php Redis扩展 环境配置: centos6. nginx/ php/ mysql ...

随机推荐

  1. jQuery慢慢啃之文档处理(五)

    1.append(content|fn)//向每个匹配的元素内部追加内容. $("p").append("<b>Hello</b>"); ...

  2. 火狐无法访问本机IIS部署的网站,弹出:此地址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求 的解决办法

    关于火狐浏览器访问本机IIS部署的网站弹出“此地址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求”这个错误(错误截图如下): 解决方法如下: 1.打开火狐浏览器, ...

  3. DOM对象控制HTML无素——详解2

    节点属性 在文档对象模型 (DOM) 中,每个节点都是一个对象.DOM 节点有三个重要的属性 : 1. nodeName : 节点的名称 2. nodeValue :节点的值 3. nodeType ...

  4. php实现返回上一页的功能的3种有效方法

    php实现返回上一页的功能的3种有效方法 header(location:你的上一页的路径);   //   注意这个函数前不能有输出 header(location:.getenv("HT ...

  5. 去除后台ckeditor的style="...."的样式

    .cnt_text .text img {/*width :auto !important;*/height :auto !important; max-width:660px;} 高度自适应,高度让 ...

  6. jquery.lazyload.js图片延迟加载

    转:http://www.jb51.net/article/50273.htm 这篇文章主要介绍了Jquery图片延迟加载插件jquery.lazyload.js的使用方法,需要的朋友可以参考下   ...

  7. phpcms栏目调用

    {loop subcat(0,0,0,$siteid) $r} {php $num++} <h3><a href="{$r[url]}">{$r[catna ...

  8. Unity问答——请问一下动画状态机怎么判断动画是否播完了?

    这篇博客源自我在泰课在线的回答.链接:http://www.taikr.com/group/1/thread/233 问:请问一下动画状态机怎么判断动画是否播完了? 答: 1. 脚本参考 Animat ...

  9. BZOJ 1059 [ZJOI2007]矩阵游戏

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2707  Solved: 1322[Submit][Stat ...

  10. ZOJ-2112-Dynamic Rankings(线段树套splay树)

    题意: 完成两个操作: 1.询问一个区间里第k小的数: 2.修改数列中一个数的值. 分析: 线段树套平衡树,线段树中的每个节点都有一棵平衡树,维护线段树所记录的这个区间的元素.这样处理空间上是O(nl ...