Linux-shellベース-4
redisプロファイル
次は私のプロファイルです.
var/runの実行権限
そして私はsudo touch redisを使います.pid
権限の問題かどうか分からないので、o権限を変更します
サービスが再起動されていないのではないでしょうか.
再起動してみろpidにpid番号が入っています
redisサービスを閉じる
shellファイルの下を修正するのは元のファイルで、私たちがしなければならないのは実はとても簡単で、経路を実際に保存することに修正するだけでいいです
次のように変更します.
procの下にpidがあるかどうか見てみましょう
redisサービステストを閉じる
実行結果
:redis.pid
次は私のプロファイルです.
# 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.
var/runの実行権限
lrwxrwxrwx 1 root root 4 Feb 24 06:57 run -> /run
そして私はsudo touch redisを使います.pid
root@ubuntu:/home/fuhui/redis-2.8.19/utils# pwd
/home/fuhui/redis-2.8.19/utils
root@ubuntu:/home/fuhui/redis-2.8.19/utils# sh redis_init_script stop
/var/run/redis_6379.pid does not exist, process is not running
権限の問題かどうか分からないので、o権限を変更します
fuhui@ubuntu:/var/run$ sudo chmod o+wx redis.pid
-rw-r--rwx 1 root root 0 Jun 22 08:39 redis.pid
サービスが再起動されていないのではないでしょうか.
fuhui@ubuntu:/var/run$ ps -ef | grep 'redis'
fuhui 2452 1 0 07:55 ? 00:00:04 redis-2.8.19/src/redis-server *:6379
fuhui 2908 2756 0 08:46 pts/13 00:00:00 grep --color=auto redis
fuhui@ubuntu:/var/run$ kill -9 2452
fuhui@ubuntu:/var/run$ ps -ef | grep 'redis'
fuhui 2910 2756 0 08:46 pts/13 00:00:00 grep --color=auto redis
再起動してみろpidにpid番号が入っています
redisサービスを閉じる
root@ubuntu:/home/fuhui/redis-2.8.19/utils# sh redis_init_script stop
/var/run/redis_6379.pid does not exist, process is not running
shellファイルの下を修正するのは元のファイルで、私たちがしなければならないのは実はとても簡単で、経路を実際に保存することに修正するだけでいいです
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.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
次のように変更します.
root@ubuntu:/home/fuhui/redis-2.8.19/utils# cp redis_init_script ../redis_script
procの下にpidがあるかどうか見てみましょう
fuhui@ubuntu:/proc$ cd /proc/
fuhui@ubuntu:/proc$ ls -lh | grep 2912
dr-xr-xr-x 9 root root 0 Jun 22 08:47 2912
redisサービステストを閉じる
fuhui@ubuntu:~/redis-2.8.19$ src/redis-cli
127.0.0.1:6379> shutdown
not connected>
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
#REDISPORT=6379
EXEC=/home/fuhui/redis-2.8.19/src/redis-server
CLIEXEC=/home/fuhui/redis-2.8.19/src/redis-cli
PIDFILE=/var/run/redis.pid
CONF="/home/fuhui/redis-2.8.19/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 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
実行結果
root@ubuntu:/home/fuhui/redis-2.8.19# sh redis_script start
Starting Redis server...
root@ubuntu:/home/fuhui/redis-2.8.19# ps -ef | grep 'redis'
root 2972 1 0 09:08 ? 00:00:00 /home/fuhui/redis-2.8.19/src/redis-server *:6379
root 2993 2720 0 09:09 pts/6 00:00:00 grep --color=auto redis
root@ubuntu:/home/fuhui/redis-2.8.19# sh redis_script stop
Stopping ...
Redis stopped
root@ubuntu:/home/fuhui/redis-2.8.19# ps -ef | grep 'redis'
root 2998 2720 0 09:10 pts/6 00:00:00 grep --color=auto redis