Linux

在 redhat 6.1 上將 redis 作為服務啟動失敗

  • December 8, 2015

我已經在 redhat 6.1 linux 機器上安裝了 redis。

我使用了命令

make make install cd utils ./install_server

我使用了所有預設設置,因此我可以使用redis-server命令啟動伺服器。現在我想開始是作為一個服務,這應該是可行的serviece redis_6379 start。但是,我得到以下輸出:

[root@localhost ssl]# sudo service redis_6379 start exists, process is already running or crashed

在我看來,系統沒有讀取$PIDFILE變數,根據其中的腳本,該變數/etc/init.d/redis_6379是從/etc/redis/6379.conf. 這兩個文件都按照預設配置。

任何想法為什麼會發生這種情況以及如何解決它?

下面是中的腳本/etc/init.d/redis_6379

#!/bin/sh\n #Configurations injected by install_server below....\n\n EXEC=/usr/local/bin/redis-server\n CLIEXEC=/usr/local/bin/redis-cli\n PIDFILE=/var/run/redis_6379.pid\n CONF="/etc/redis/6379.conf"\n\n REDISPORT="6379"\n\n ###############\n\n

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
       ;;
   stop)
       if [ ! -f $PIDFILE ]
       then
               echo "$PIDFILE does not exist, process is not running"
       else
               PID=$(cat $PIDFILE)
               echo "Stopping ..."
               $CLIEXEC -p $REDISPORT shutdown
               while [ -x /proc/${PID} ]
               do
                   echo "Waiting for Redis to shutdown ..."
                   sleep 1
               done
               echo "Redis stopped"
       fi
       ;;
   *)
       echo "Please use start or stop as first argument"
       ;;
esac

在此先感謝您的幫助。

原來問題出在票據/etc/init.d/redis_6379上。

我不知道是什麼原因(也許解決了一些問題,因為這是來自 redis 2.6.7,但第一行格式錯誤。一旦我把它變成

#!/bin/sh
#Configurations injected by install_server below....
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis_6379.pid
CONF="/etc/redis/6379.conf"
REDISPORT="6379"

###############

整個事情開始起作用了。

FWIW - 如果您使用此處提供的初始化腳本http://download.redis.io/redis-stable/utils/redis_init_script您必須在初始化腳本中添加一個statusandstatus_q選項,以便在您使用時 redis 正確顯示service --status-all否則服務將顯示“請使用啟動或停止作為第一個參數”

引用自:https://serverfault.com/questions/629706