Redis加入Centos Linux開機啟動


Redis加入Centos Linux開機啟動

      網上有很多redis在linux下自動啟動的例子,實現的方式很多,很多都是參考一個老外流傳出來啟動的例子,其實直接使用是不行,而且有很多地方有一些語法錯誤,這里就講我實驗過,成功的Linux服務chkconfig配置啟動的方法。

下面直接貼出內容,大家下載后進行修改即可使用,后面會詳解具體參數:

# chkconfig: 2345 10 90
# description: Start and Stop redis

PATH=/usr/local/bin:/sbin:/usr/bin:/bin

REDISPORT=6379
EXEC=/opt/redis-2.8.9/src/redis-server
REDIS_CLI=/opt/redis-2.8.9/src/redis-cli

PIDFILE=/var/run/redis.pid
CONF="/etc/redis.conf"
AUTH="1234"

case "$1" in
  start)
    if [ -f $PIDFILE ]
    then
      echo "$PIDFILE exists, process is already running or crashed."
    else
      echo "Starting Redis server..."
      $EXEC $CONF
    fi
    if [ "$?"="0" ]
    then
      echo "Redis is running..."
    fi
    ;;
  stop)
    if [ ! -f $PIDFILE ]
    then
      echo "$PIDFILE exists, process is not running."
    else
      PID=$(cat $PIDFILE)
      echo "Stopping..."
      $REDIS_CLI -p $REDISPORT -a $AUTH  SHUTDOWN 
      sleep 2
      while [ -x $PIDFILE ]
      do
        echo "Waiting for Redis to shutdown..."
        sleep 1
      done
      echo "Redis stopped"
    fi
    ;;
  restart|force-reload)
    ${0} stop
    ${0} start
    ;;
  *)
    echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
    exit 1
esac

 

2、寫完后保存退出VI

3、設置權限

chmod 755 redis

4、啟動測試

/etc/init.d/redis start

啟動成功會提示如下信息:

Starting Redis server...
Redis is running...

使用redis-cli測試:

[root@rk ~]# /usr/redisbin/redis-cli
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
"bar"
127.0.0.1:6379> exit

6、設置開機自啟動

chkconfig redis on

7、關機重啟測試

reboot

然后在用redis-cli測試即可。

  

 

 

# chkconfig: 2345 10 90

表示通過chkconfig配置,在linux中2、3、4、5項中啟動,這個2345代表就linux系統的啟動順序具體,具體內容是:等級0表示:表示關機、等級1表示:單用戶模式、等級2表示:無網絡連接的多用戶命令行模式、等級3表示:有網絡連接的多用戶命令行模式、等級4表示:不可用、 等級5表示:帶圖形界面的多用戶模式、  等級6表示:重新啟動

如果看不明白,自己百度 chkconfig命令詳細說明。

# description: Start and Stop redis

上面一句是描述

PATH=/usr/local/bin:/sbin:/usr/bin:/bin

PATH是啟動腳本使用的shell的搜索路徑

REDISPORT=6379

REDISPORT指redis端口,啟動redis使用

EXEC=/opt/redis-2.8.9/src/redis-server

安裝redis后 redis-server的絕對路徑,在啟動redis時使用

REDIS_CLI=/opt/redis-2.8.9/src/redis-cli

redis連接程序絕對路徑,在關閉redis時使用

PIDFILE=/var/run/redis.pid

redis.conf配置文件中指定的pid路徑地址,這里說明一下,在 redis.conf配置文件中需要將 daemonize這個參數項設置為 yes才會在redis啟動時生成pid文件,很多新人不知道,沒有生成pid文件,所以腳本里根據pid文件關閉redis就失敗。

CONF="/etc/redis.conf"

redis啟動配置文件,啟動使用

AUTH="1234"

如果redis設置了登錄密碼,就需要這個配置,具體看下面介紹stop的章節

 start)

                # 這里判斷PID文件是否存在,如果存在,就說明reids啟動中或者運行異常,因為redis啟動后會創建一個pid文件,如果正常關閉就會刪除這個pid文件

                if [ -f $PIDFILE ]

                then

                        echo "$PIDFILE exists, process is already running or crashed."

                else

                # 如果不存在pid文件,就啟動reids,啟動成功后提示 "Redis is running..."

                        echo "Starting Redis server..."

                        $EXEC $CONF

                fi

                if [ "$?"="0" ]

                then

                        echo "Redis is running..."

                fi

                ;;

        stop)

                # 在關閉reids的時候,如果pid文件不存在,就判斷redis沒有啟動

                if [ ! -f $PIDFILE ]

                then

                        echo "$PIDFILE exists, process is not running."

                else

                ## -- 如果存在pid文件,就獲取pid編號,然后登錄到redis中,輸入SHUTDOWN 來停止redis服務

                        PID=$(cat $PIDFILE)

                        echo "Stopping..."

                     ## -- 本節例子是redis有設置登錄密碼的例子,如果沒有登錄密碼,下面的命令就去掉-a $AUTH : $REDIS_CLI -p $REDISPORT  SHUTDOWN 

                        $REDIS_CLI -p $REDISPORT -a $AUTH  SHUTDOWN 

                        sleep 1

                     ## -- 循環判斷pid文件是否存在,這里用的是是否可執行,道理一樣,理解為程序是否停止就可以了,直到pid文件刪除后,就說明redis關閉了。

                        while [ -x $PIDFILE ]

                        do

                                echo "Waiting for Redis to shutdown..."

                                sleep 1

                        done

                        echo "Redis stopped"

                fi

                ;;

最后說幾個可能遇到的問題:

1. 如果啟動腳本提示某個文件找不到,說明我們文件里的內容有誤:比如 cat $(PIDFILE)  -x ${PIDFILE} 如果這些寫在正常的指令或者字符串中正常,但是在判斷表達式[]中就會出錯

2 .如果找不到pid文件,需要配置redis.conf配置中的選項打開。

其實所以問題都是一點點的排查檢查才能最終正確。保持耐心和細心就可以了。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM