Saya juga mengalami masalah yang sama. Situasi saya pada masa itu ialah: menggunakan boneka untuk penghantaran automatik dan penggunaan redis, selepas mendayakan kata laluan pengesahan untuk redis, dan menutup perkhidmatan dalam boneka, boneka akan membeku dan tidak boleh diteruskan. Kemudian, perkara yang sama ditemui apabila mengesan masalah secara manual. Sebabnya sebenarnya skrip kawalan perkhidmatan yang disediakan oleh pengarang redis dalam pakej kod sumber tidak mempertimbangkan cara untuk menutup perkhidmatan selepas menambah kata laluan pengesahan. Kaedah penutupan dengan kata laluan ialah: redis-cli -p port-a penutupan kata laluan Oleh kerana saya menggunakan boneka untuk menggunakan redis, saya menjadikan skrip ini sebagai templat fail boneka Jika saya menambah kata laluan, ia akan secara automatik ubah suai skrip kawalan perkhidmatan. Saya telah menyiarkan templat, harap ia membantu.
#!/bin/sh
#Configurations injected by install_server below....
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis_<%= name %>.pid
CONF="/etc/redis/<%= name %>.conf"
REDISPORT="<%= name %>"
###############
# SysV Init Information
# chkconfig: - 58 74
# description: redis_<%= name %> is the redis daemon.
### BEGIN INIT INFO
# Provides: redis_<%= name %>
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Should-Start: $syslog $named
# Should-Stop: $syslog $named
# Short-Description: start and stop redis_<%= name %>
# Description: Redis daemon
### END INIT INFO
case "" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis_$REDISPORT server..."
$EXEC $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
<% if @password == 'nopass' -%>
$CLIEXEC -p $REDISPORT shutdown
<% else -%>
$CLIEXEC -p $REDISPORT -a <%= @password %> shutdown
<% end -%>
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis_$REDISPORT to shutdown ..."
sleep 2
done
echo "Redis_$REDISPORT stopped"
fi
;;
status)
PID=$(cat $PIDFILE)
if [ -f $PIDFILE ]
then
if [ ! -x /proc/${PID} ]
then
echo 'Redis_$REDISPORT is not running'
rm -rf $PIDFILE
exit 1
else
echo "Redis_$REDISPORT is running"
fi
else
echo 'No PID File,Redis_$REDISPORT is not running'
exit 1
fi
;;
restart)
rrreee stop
rrreee start
;;
*)
echo "Please use start, stop, restart or status as first argument"
;;
esac
Pada masa ini, saya telah membuat skrip untuk menutup Redis buat sementara waktu, dan menjalankannya secara manual sebelum mematikan mesin maya. Sedikit menggosok.
Oleh kerana pengaturcaraan Shell tidak biasa, anda masih perlu mempelajari skrip anda. Walau bagaimanapun, jika redis-cli tidak mempunyai kunci, ia sepatutnya mengembalikan ralat NOAUTH Anda perlu membuat pertimbangan selepas menangkapnya dan menggunakan semula redis-cli+key untuk menutup Redis.
Akhir sekali, cari skrip penutupan yang sepadan dalam direktori /etc/init untuk melihat cara mengintegrasikannya.
Saya juga mengalami masalah yang sama.
Situasi saya pada masa itu ialah: menggunakan boneka untuk penghantaran automatik dan penggunaan redis, selepas mendayakan kata laluan pengesahan untuk redis, dan menutup perkhidmatan dalam boneka, boneka akan membeku dan tidak boleh diteruskan. Kemudian, perkara yang sama ditemui apabila mengesan masalah secara manual.
Sebabnya sebenarnya skrip kawalan perkhidmatan yang disediakan oleh pengarang redis dalam pakej kod sumber tidak mempertimbangkan cara untuk menutup perkhidmatan selepas menambah kata laluan pengesahan.
Kaedah penutupan dengan kata laluan ialah: redis-cli -p port-a penutupan kata laluan
Oleh kerana saya menggunakan boneka untuk menggunakan redis, saya menjadikan skrip ini sebagai templat fail boneka Jika saya menambah kata laluan, ia akan secara automatik ubah suai skrip kawalan perkhidmatan. Saya telah menyiarkan templat, harap ia membantu.
Redis
boleh ditutup dengan melaksanakan perintahSHUTDOWN
pada klien.Pada masa ini, saya telah membuat skrip untuk menutup Redis buat sementara waktu, dan menjalankannya secara manual sebelum mematikan mesin maya. Sedikit menggosok.
Oleh kerana pengaturcaraan Shell tidak biasa, anda masih perlu mempelajari skrip anda. Walau bagaimanapun, jika redis-cli tidak mempunyai kunci, ia sepatutnya mengembalikan ralat NOAUTH Anda perlu membuat pertimbangan selepas menangkapnya dan menggunakan semula redis-cli+key untuk menutup Redis.
Akhir sekali, cari skrip penutupan yang sepadan dalam direktori /etc/init untuk melihat cara mengintegrasikannya.