脚本功能:

实现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. 在静态页面html中跳转传值

    在html中通过"?"传值--------<a href="index2.html?name=caoy">静态传值</a> 在跳转到的页 ...

  2. dedecms织梦导航栏二级菜单的实现方法

    dede导航下拉菜单,一级栏目增加二级下拉菜单   使用dedecms5.6——5.7 将这段代码贴到templets\default\head.htm文件里<!-- //二级子类下拉菜单,考虑 ...

  3. YII session存储 调用login方法

    当要进行用户的session存储的时候,可以调用里面的login方法进行存储

  4. ubuntu wubi安装注意事项

    从这个镜像下载 http://mirrors.163.com/ubuntu-releases/12.10/ ubuntu-12.10-desktop-amd64.iso 和 wubi.exe然后放到同 ...

  5. QS Network

    zoj1586:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1586 题目大意:最小生成树,不只算两点之间的费用,还要算点 ...

  6. 智能硬件开发如何选择低功耗MCU

    本文将市场上典型的低功耗MCU系列进行了比较,分析得出基于ARM. Cortex M0+内核的MCU系列最适合穿戴式医疗设备的开发.设备开发者当密切关注其发展动向,结合现有的市场需求.产品体系的构建和 ...

  7. python locals()和globals()

    Python有两个内置的函数,locals() 和globals(),它们提供了基于字典的访问局部和全局变量的方式. 首先,是关于名字空间的一个名词解释.是枯燥,但是很重要,所以要耐心些.Python ...

  8. 几个Uboot命令

    1 nand scrub 这个命令会擦除坏块信息,将坏块标识成好的,但此时这个坏块有潜在有危险,在特定条件下仍会造成数据的丢失,所以应该谨慎使用. Run U-boot and then use th ...

  9. AC+DP练习

    1.HDU 2222 Keywords Search 求目标串中出现了几个模式串. #include<iostream> #include<cstdio> #include&l ...

  10. 线段树(区间修改、区间查询) HDU 1754 I Hate It

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...