在redhat 6.1上启动redis作为服务失败

我已经在redhat 6.1 linux机器上安装了redis

我使用了这些命令

make make install cd utils ./install_server

我使用了所有的默认设置,所以我可以用redis-server命令启动redis-server 。 现在我想开始是作为一个服务,这应该是可行的,通过serviece redis_6379 start 。 但是,我得到以下输出:

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

在我看来,系统没有读取$PIDFILEvariables,根据/etc/init.d/redis_6379的脚本从/etc/redis/6379.conf的configuration文件/etc/redis/6379.conf 。 这两个文件都是按照默认configuration。

任何想法,为什么发生这种情况,以及如何解决它?

以下是/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 

先谢谢您的帮助。

原来问题出在scrip /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提供的初始化脚本,你必须在初始化脚本中添加一个statusstatus_q选项,以便redis正常显示,重新使用service --status-all或者服务将出现“请使用开始或停止作为第一个参数”