首页 电脑 电脑学堂 查看内容

管理多个redis的一个脚本

2011-10-17 21:04 895 0

摘要:   我们在一台服务器上部署了8个redis,显然手动停止/启动多个redis不是很方便,所以写了一个shell脚本,就是为了能够同时停止/启动多个redis。使用了两个自定义函数,一个case条件,多...
关键词: nbsp bin redis echo INS then status grep start print

  我们在一台服务器上部署了8个redis,显然手动停止/启动多个redis不是很方便,所以写了一个shell脚本,就是为了能够同时停止/启动多个redis。使用了两个自定义函数,一个case条件,多个if条件,还有几个for循环,另外就是shift,用以处理用户传递的多个参数。  这个脚本感觉有点臃肿,可能使用数组会好点,但是我不擅长数组;也考虑过使用自定义函数来判断用户输入的redis是否合法,或正在运行,但shell函数显然不太擅长处理用户传递的多个脚本参数。#!/bin/bash #2011-10-10 by qinshan.li # PROCESS=$(pgrep redis) SEP='------------------' PATH=/usr/local/redis-2.2.8  status() {     if [ -z "$PROCESS" ]     then         echo "No redis is running..."     else         echo "PID  NAME  PORT"         echo $SEP         /bin/ps -ef |/bin/grep redis |/bin/grep -v grep |/bin/awk '{print $2" "$9}' |/bin/awk -F ' +|/' '{print $1" "$6}' >process.txt         /bin/netstat -anp |/bin/grep redis |/bin/awk -F "(:|/)" '{print $2" "$3}' |/bin/awk '{print $5" "$1}' >port.txt         /usr/bin/join process.txt port.txt         echo $SEP     fi  }  start() {     for i in $(/bin/ls); do         if [ -d $PATH/$i ]; then             P=$(/bin/ps -ef |/bin/grep $i |/bin/grep -v grep |/bin/awk '{print $2}')             if [ -n "$P" ]; then                 echo "'$i' is running. Stop it first."             else                 echo -e "Starting redis '$i'..."                 /usr/bin/nohup /usr/local/bin/redis-server $PATH/$i/redis.conf >/dev/null 2>&1 &             fi         fi     done }  case $1 in     stop)         if [ $# -eq 1 ]; then             /bin/kill -9 $(/usr/bin/pgrep redis)         else             shift             for INS in "$@"             do                   if [ -d $PATH/$INS ]; then                     P=$(status |/bin/grep $INS |/bin/awk '{print $1}')                     if [ -z "$P" ]; then                         echo "'$INS' is not running."                     else                         /bin/kill -9 $P && echo "Stop '$INS' successfully." || echo "Stop '$INS' failed."                     fi                   else                     echo "No redis named '$INS' to stop."                 fi                    shift             done         fi           ;;        start)         if [ $# -eq 1 ]; then             start         else             shift             for INS in "$@"             do                   if [ -d $PATH/$INS ]; then                     P=$(status |/bin/grep $INS |/bin/awk '{print $2}')                     if [ -n "$P" ]; then                         echo "'$INS' is running. Stop it first."                     elif                         /usr/bin/nohup /usr/local/bin/redis-server $PATH/$INS/redis.conf >/dev/null 2>&1 &                     then                         echo "Start '$INS' successfully."                     else                         echo "Start '$INS' failed."                     fi                   else                     echo "No redis named '$INS' to start."                 fi                    shift             done         fi           ;;        status)         if [ $# -eq 1 ]; then             status         else             echo "Usage: `/bin/basename $0` status"         fi           ;;        *)           echo "Usage: `/bin/basename $0` status |start [redis-n1]... |stop [redis-n1]..."         ;;   esac
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部