redis停启脚本(带OOM配置功能)多语言版

redis停机脚本带OOM配置功能

1.Shell

#!/bin/sh
#
# redis        init file for starting up the redis daemon
#
# chkconfig:   - 20 80
# description: Starts and stops the redis daemon.
#

# Source function library.
. /etc/rc.d/init.d/functions

name="redis-server"
exec="/opt/redis/$name"
cli="/opt/redis/redis-cli"
REDIS_CONFIG="/opt/redis/redis.conf"

pidfile=`grep "pidfile" ${REDIS_CONFIG}|cut -d ‘ ‘ -f2`
pidfile=${PID_FILE:=/var/run/redis.pid}

[ -e /etc/sysconfig/redis ] && . /etc/sysconfig/redis

lockfile=/var/lock/subsys/redis

shut(){
test x"$REDIS_DEBUG" != x && set -x
# Use awk to retrieve host, port from config file
HOST=`awk ‘/^[[:blank:]]*bind/ { print $2 }‘ $REDIS_CONFIG | tail -n1`
PORT=`awk ‘/^[[:blank:]]*port/ { print $2 }‘ $REDIS_CONFIG | tail -n1`
PASS=`awk ‘/^[[:blank:]]*requirepass/ { print $2 }‘ $REDIS_CONFIG | tail -n1`
SOCK=`awk ‘/^[[:blank:]]*unixsocket\s/ { print $2 }‘ $REDIS_CONFIG | tail -n1`

# Just in case, use default host, port
HOST=${HOST:-127.0.0.1}
PORT=${PORT:-6379}
# Setup additional parameters
# e.g password-protected redis instances
[ -z "$PASS"  ] || ADDITIONAL_PARAMS="-a $PASS"

# shutdown the service properly
if [ -e "$SOCK" ] ; then
    ${cli} -s $SOCK $ADDITIONAL_PARAMS shutdown
else
    ${cli} -h $HOST -p $PORT $ADDITIONAL_PARAMS shutdown
fi
}

start() {
    [ -f $REDIS_CONFIG ] || exit 6
    [ -x $exec ] || exit 5
    retval=$?
    echo -n $"Starting $name:  "
    daemon --user ${REDIS_USER-redis} "$exec $REDIS_CONFIG --daemonize yes --pidfile $pidfile"
    echo
    [ $retval -eq 0 ] && touch $lockfile || failure  "Starting $name: "
    return $retval
}

stop() {
    echo -n $"Stopping $name: "
    retval=$?
    shut
    sleep 2
    if [ -f $pidfile ]
    then
        # shutdown haven‘t work, try old way
        killproc -p $pidfile $name
        retval=$?
    else
        success "$name shutdown"
    fi
    echo
    [[ $retval -eq 0 ]] && rm -f $lockfile || failure  "$name shutdown"
    return $retval
}

set_oom() {
    read PID <  "$pidfile"
    echo -n $"Setting $name PID:$PID oom_score_adj"
    echo -1000 > /proc/${PID}/oom_score_adj
    retval=$?
    if [ $retval -ne 0 ];then
        failure;echo;
        #echo -n $" Setting $name PID:$PID oom_score_adj not success.";failure;echo
        exit 0
    else
        success;echo;
    fi
    return $retval
}

restart() {
    stop
    start
}

rh_status() {
    status -p $pidfile $name
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

rh_status_not_exits(){
    rh_status_q
    retval=$?
    if [ $retval -ne 0 ] ;then
        warning ;echo -n $"$name: Already Shutdown " ;echo
        exit 0
    fi
}

rh_status_exits(){
    rh_status_q
    retval=$?
    if [ $retval -eq 0 ] ;then
        warning ;echo -n $"$name: Already Running " ;echo
        exit 0
    fi
}

case "$1" in
    start)
        #rh_status_q && exit 0
        rh_status_exits
        $1
        ;;
    stop)
        #rh_status_q || exit 0
        rh_status_not_exits
        $1
        ;;
    restart)
        $1
        ;;
    set_oom)
        #rh_status_q || exit 0
        rh_status_not_exits
        $1
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
        restart
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|set_oom|condrestart|try-restart}"
        exit 2
esac
exit $?

2.Go

原文地址:https://blog.51cto.com/zhangyc/2422116

时间: 2024-10-13 11:54:54

redis停启脚本(带OOM配置功能)多语言版的相关文章

redis 自启脚本

#!/bin/bash # author #date 2014-03-12 #chkconfig: - 90 23 pidfile="/var/run/redis.pid" #config /etc/redis/redis.conf #source function library. . /etc/rc.d/init.d/functions #defualt files redis_conf=${redis_conf:-"/etc/redis/redis.conf"

mysql多实例停启脚本

#!/bin/bash port=3306 basedir=/application/mysql datadir=/data/$port/data pidfile=/data/$port/mysql.pid sock=/data/$port/mysql.sock bindir=$basedir/bin STATUS=$1 USAGE(){ echo "Usage: /data/$port/mysql {start|stop|restart}" } start(){ if [ ! -f

【redis运维】redis自动安装脚本(只安装redis)

Redis自动安装部署 本文总共分为4个部分: redis自动安装脚本目录结构说明: redis自动安装脚本内容: redis的操作系统服务脚本说明: 本文引用的资料链接地址. 说明:本文未涉及redis内存分配器部分的内容. 第一部分 Redis自动安装脚本目录结构说明: # ls 查看当前目录包含以下3个文件 -- install_redis.sh        # redis自动安装脚本 -- redis-2.8.9.tar.gz      # redis安装包(需make,make te

利用shell脚本实现计划任务功能 V1.2

2013.05.10  mytask 1.2 主程序休眠时间分成若干小的时间片断分段休眠,避免长时间的休眠不能及时响应系统信号. 2013.05.07 mytask 1.1 昨天发布了mytask1.0 版后(利用shell脚本实现计划任务功能),一直在想着如何解决那个最后的遗留问题"每个任务脚本中声明的函数名必须唯一不能重复,否则会导致任务函数覆盖.",无意间自问了一句为什么不能像crontab那样直接调用脚本和命令呢?这一问才让自己回忆起来,之所以用function封装任务是因为早

.Net Core使用分布式缓存Redis:Lua脚本

一.前言 运行环境window,redis版本3.2.1.此处暂不对Lua进行详细讲解,只从Redis的方面讲解. 二.Redis的Lua脚本 在Redis的2.6版本推出了脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行,在Lua脚本中也可以调用大部分的Redis命令.使用脚本有以下三个好处: (1) 减少网络开销:有些时候需要多次请求Redis获取处理数据,而使用脚本功能就可以只使用一次请求完成相同操作,减少了网络往返时延. (2) 原子操作:Redis会将整个脚本作为一个整体

【转】使用Eclipse自带的导出功能

转载地址:http://www.xuebuyuan.com/759047.html Eclipse打包(导出)jar文件攻略(一)–使用Eclipse自带的导出功能 2012年10月02日 ⁄ 综合 ⁄ 共 517字 ⁄ 字号 小 中 大 ⁄ 评论关闭 使用Eclipse自带的导出功能生成jar文件 1.  在项目任何地方点击右键-Export-Java-JAR file,Next 2.  JAR文件选项,Next 注意选项“Compress the contents of the JAE fi

Redis自动化安装脚本

redis自动安装脚本: 安装目录:/usr/local/redis 二进制文件:/usr/local/bin 配置文件:/usr/local/redis/etc,配置文件自己根据自身的业务去配置,这里只是一个空文件. 日志文件:/usr/local/redis/logs 数据文件:/usr/local/redis/dump #!/bin/bash Soft_dir="/home/tools" Download_URL="http://download.redis.io/re

Redis安装及HA(High Availability)配置

Redis是一种内存数据库,以KEY-VALUE(即键值对)的形式存储数据.这篇文章主要介绍的是Redis安装及配置,所以不对Redis本身作详细介绍了. 下载: http://redis.io/download (另外,Redis作者有一博客:http://antirez.com/latest/0,有兴趣的可以关注) 解压: 以redis-2.8.19.tar.gz为例,解压放在某目录下,这里选择/usr/local目录. 编译: 进入/usr/local/redis-2.8.19,执行 #m

Redis安装及HA(High Availability)配置(转)

出处:http://www.cnblogs.com/morvenhuang/p/4184262.html Redis是一种内存数据库,以KEY-VALUE(即键值对)的形式存储数据.这篇文章主要介绍的是Redis安装及配置,所以不对Redis本身作详细介绍了. 下载: http://redis.io/download (另外,Redis作者有一博客:http://antirez.com/latest/0,有兴趣的可以关注) 解压: 以redis-2.8.19.tar.gz为例,解压放在某目录下,