脚本功能:

实现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. Cocos2dx开发(1)——Win8.1下 NDK r10 环境搭建

    内容简要:仅讲述NDK在Windows环境下搭建方法,至于NDK何物一概不属于本文内容,老鸟或已有环境的跳过. 笔者已安装的环境: vs2013企业版.谷歌官网adt 22.3.0(推荐)省得自己ec ...

  2. HTML TAG FROM MDN

    A <a> <abbr> <acronym> <address> <applet> <area> <article> ...

  3. C# Winform 双屏显示

    双屏显示1 // 利用WinForm中的Screen类,即可比较方便地实现多窗体分别在多个屏幕上显示. //•获取当前系统连接的屏幕数量: Screen.AllScreens.Count(); //• ...

  4. 数组Api .map()的使用

    之前并没有过多的使用过这个Api,在此记录下对其的理解,方便以后多多使用. 首先是对map的说明: var mappedArray = array.map(callback[, thisObject] ...

  5. 拓扑排序-DFS

    拓扑排序的DFS算法 输入:一个有向图 输出:顶点的拓扑序列 具体流程: (1) 调用DFS算法计算每一个顶点v的遍历完成时间f[v] (2) 当一个顶点完成遍历时,将该顶点放到一个链表的最前面 (3 ...

  6. Js冒泡事件和捕获事件

    js中冒泡事件和捕获事件: 冒泡事件:冒泡事件是从里向外,即是从被绑定元素开始一直向外到达页面的所有祖先元素都会被触发,这 一过程被称为事件冒泡.这个事件从原始元素开始一直冒泡到DOM树的最上层 捕获 ...

  7. pycharm常用快捷键与设置

    pycharm高频率使用的快捷键 Ctrl+Shift+F10 运行当前的页面 Ctrl + / 注释(取消注释)选择的行 Ctrl+Shift+F 高级查找 Shift + Enter 开始新行 T ...

  8. 完美世界-2015校园招聘-java服务器工程师-成都站

    给定一个整数,将该整数分解成多个2的幂次方相加的形式,每次都取最大的可以分解出来的2的幂次方 比如 65 64 1 1 1 2 2 package wanmanshijie; import java. ...

  9. install ubuntu

    http://wenku.baidu.com/link?url=Cq6nB1ArObV1liMUT13ZB9o16NQ0-FpELt37R6NuPvz7zoKlz14Mu_k-8CwqQodWpRC8 ...

  10. Sequence《优先队列》

    Description Given m sequences, each contains n non-negative integer. Now we may select one number fr ...