脚本功能:

实现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. ubuntn 虚拟机NAT 静态IP 网络配置

    在虚拟机安装ubuntu12.04自动获取IP 一切都没有问题 ssh连接也正常.关机重启后郁闷的发现网络已经不通了,于是开始了以下的摸索. 1.配置静态IP 网关: ip段: 命令: Vim /et ...

  2. Java学习----对象间的继承

    继承:子类可以使用父类非私有的成员变量和方法 public class Father { public String name; public String bloodType; private in ...

  3. AJAX编程模板

    AJAX一直以来没怎么接触,主要是做JSON数据在服务器和客户端之间传递的时候,被玩坏了,对它莫名的不可爱,最近心理阴影小了,于是又来看看它....... AJAX即“Asynchronous Jav ...

  4. 响应式十日谈第一日:使用 rem 设置文字大小

    上面回顾: 在序言中我们已经提到了响应式的一些基本理念,比如: 响应式网页不仅仅是响应不同类型的设备,而且需要响应不同的用户需求.响应式的初衷是为了让信息更好的传递交流,让所有人无障碍的获取信息,同时 ...

  5. sql语句复制表

    1.复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable; ...

  6. highcharts实例教程二:结合php与mysql生成饼图

    上回我们分析了用highcharts结合php和mysql生成折线图的实例,这次我们以技术cto网站搜索引擎流量为例利用highcharts生成饼图. 饼图通常用在我们需要直观地显示各个部分所占的比例 ...

  7. 关于Unity导出的Android应用在小米、联想等机型上崩溃的问题

    应用在三星手机上运行没有出现问题,但在小米和联想手机上会崩溃.这个问题在刚开始时一直查不到问题所在,后来发现是因为Android清单文件中声明的权限出现了重复,去掉了重复的权限之后,就没有出现崩溃的情 ...

  8. Thinking In Java 学习笔记 1-5 章

    第1章 对象导论 本章主要讲OOP的思想及一些OOP基本概念 1.抽象过程:万物都是对象,对象具有状态.行为和标识.对象拥有属性和方法,以及在内存中的唯一地址. 2.每个对象都有一个接口:通过接口给对 ...

  9. AMD:浏览器中的模块规范

    前面提到,为实现与Node.js相同方式的模块写法,大牛们做了很多努力. 但浏览器环境不同于服务器端,它的模块有一个HTTP请求过程(而Node.js的模块文件就在本地),这个请求过程多数使用scri ...

  10. [BZOJ 1207] [HNOI 2004] 打鼹鼠 【DP】

    题目链接:BZOJ - 1207 题目分析 每一次打鼹鼠一定是从上一次打某只鼹鼠转移过来的,从打第 j 只鼹鼠能不能转移到打第 i 只鼹鼠,算一下曼哈顿距离和时间差就知道了. 那么就有一个 DP ,用 ...