White Life Story

Redis 시작 스크립트 사용 시, process is not running 현상 해결 방법 본문

Develop/Server,Was

Redis 시작 스크립트 사용 시, process is not running 현상 해결 방법

새내기 whitelife 2013.09.05 12:21


발생 시점

Redis 시작 스크립트 사용 시


[whitelife@localhost init.d]$ sudo service redis stop

/var/run/redis_6379.pid does not exist, process is not running


위와 같이 redis 가 사용 중 인데 pid 를 찾지 못하여 스크립트가 process를 못 찾는 경우가 발생 한다.


해결 방법

설정 파일을 수정 아래와 같은 부분을 확인 하자.


설정 파일: redis.conf

# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes

# When running daemonized, Redis writes a pid file in /var/run/redis.pid by
# default. You can specify a custom pid file location here.
pidfile /var/run/redis_6379.pid

# Accept connections on the specified port, default is 6379.
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379

스크립트 파일: redis

#!/bin/sh
#
# chkconfig: 2345 64 36
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

REDISPORT=6379
EXEC=/usr/bin/redis-server
CLIEXEC=/usr/bin/redis-cli

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

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

1.  daemon 사용시 daemonize 옵션을 활성화 해야 한다.

2.  pidfile 경로를 확인 한다.


서비스 시작 하기

[whitelife@localhost init.d]$ sudo service redis start

Starting Redis server...

[whitelife@localhost init.d]$ sudo service redis stop

Stopping ...

Redis stopped


pid 파일 확인 하기

서비스가 시작 된 후 해당 경로에서 확인 하자.

[whitelife@localhost run]$ ll | grep redis

-rw-r--r--. 1 root      root         6 2013-09-05 12:03 redis.pid

[whitelife@localhost run]$ 





Tag
,
0 Comments
댓글쓰기 폼