Как остановить redis-сервер?
У меня, по-видимому, есть экземпляр redis-server
, потому что, когда я пытаюсь запустить новый сервер, введя redis-server
, меня приветствуют следующим образом:
Opening port: bind: Address already in use
Я не могу понять, как остановить этот сервер и запустить новый.
Есть ли какая-либо команда, которую я могу добавить в redis-server
при вводе в CLI?
Моя ОС - Ubuntu 10.04.
Ответы
Ответ 1
Подключитесь к экземпляру node и используйте команду shutdown, или если вы находитесь на ubuntu, вы можете попробовать перезапустить сервер redis через init.d:
/etc/init.d/redis-server restart
или остановите/запустите его:
/etc/init.d/redis-server stop
/etc/init.d/redis-server start
В Mac
redis-cli shutdown
Ответ 2
Более чистый, более надежный способ - перейти в redis-cli, а затем ввести shutdown
В redis-cli введите help @server
, и вы увидите это в нижней части списка:
SHUTDOWN - сводка: синхронно сохраняйте набор данных на диск, а затем выключить сервер с: 0.07
И если у вас есть экземпляр redis-сервера, запущенный в терминале, вы увидите следующее:
User requested shutdown...
[6716] 02 Aug 15:48:44 * Saving the final RDB snapshot before exiting.
[6716] 02 Aug 15:48:44 * DB saved on disk
[6716] 02 Aug 15:48:44 # Redis is now ready to exit, bye bye...
Ответ 3
redis-cli shutdown
является наиболее эффективным. Принятый ответ не работает для меня (OSX Lion). Спасибо, @JesseBuesking.
Ответ 4
Для OSX я создал следующие псевдонимы для запуска и остановки redis
(устанавливается вместе с Homebrew):
alias redstart='redis-server /usr/local/etc/redis/6379.conf'
alias redstop='redis-cli -h 127.0.0.1 -p 6379 shutdown'
Это отлично работает для локального развития!
Homebrew теперь имеет homebrew-services
, который можно использовать для запуска, остановки и перезапуска сервисов. доморощенного-услуги
brew services
автоматически устанавливается при запуске.
brew services start|run redis
brew services stop redis
brew services restart redis
Если вы используете run
, он не запустится ни при входе в систему (ни при загрузке). start
запустит службу redis
и добавит ее при входе в систему и загрузке.
Ответ 5
Введите SHUTDOWN
в CLI
или
если вам не нужны ваши данные в памяти, вы также можете ввести SHUTDOWN NOSAVE
, чтобы принудительно завершить работу сервера.
Ответ 6
Попробуйте killall redis-server
. Вы также можете использовать ps aux
, чтобы найти имя и pid вашего сервера, а затем убить его с помощью kill -9 here_pid_number
.
Ответ 7
Вариант 1: перейдите в каталог установки redis и перейдите к src
, в моем случае:
/opt/redis3/src/redis-cli -p 6379 shutdown
где 6379 - порт по умолчанию.
Вариант 2: найти процесс redis и убить
ps aux | grep redis-server
t6b3fg 22292 0.0 0.0 106360 1588 pts/0 S+ 01:19 0:00 /bin/sh /sbin/service redis start
t6b3fg 22299 0.0 0.0 11340 1200 pts/0 S+ 01:19 0:00 /bin/sh /etc/init.d/redis start
И затем инициируйте kill:
kill -9 22292
kill -9 22299
Я использую Centos 6.7, x86_64
надеюсь, что это поможет
Ответ 8
Другой способ:
ps -ef | grep -i 'redis-server'
kill -9 PID owned by redis
Работает на * NIX и OSX
Ответ 9
остановить тип сервера redis в терминале с помощью пользователя root
sudo service redis-server stop
сообщение будет отображаться после остановки redis-сервера
Stopping redis-server: redis-server.
если вы хотите запустить тип redis-сервера
sudo service redis-server start
если вы хотите перезапустить тип сервера
sudo service redis-server restart
Ответ 10
MacOSX - It Worked:)
Шаг 1: найдите ранее запущенный сервер Redis
ps auxx | grep redis-server
Шаг 2: Убейте определенный процесс, найдя PID (идентификатор процесса) - Redis Sever
kill -9 PID
Ответ 11
Если вы знаете, на каком порту он будет работать (по умолчанию это будет 6379), вы можете использовать команду ниже, чтобы получить pid процесса с помощью этого порта, а затем выполнить команду kill для одного и того же pid.
sudo lsof -i : <port> | awk '{print $2}'
приведенная выше команда даст вам pid.
kill <pid>
;
Это остановит ваш сервер.
Ответ 12
Обычно эта проблема возникает после того, как я отключил свой компьютер (или оставил работу) нерегулярным способом. Я считаю, что порт закрывается, а процесс останавливается, но продолжает привязываться к предыдущему порту.
9/10 раз исправление может быть:
$ ps aux | grep redis
-> MyUser 2976 0.0 0.0 2459704 320 ?? S Wed01PM 0:29.94 redis-server *:6379
$ kill 2976
$ redis-server
Хорошо.
Ответ 13
systemd, ubuntu 16.04:
$ sudo systemctl is-active redis-server
active
$ sudo systemctl is-enabled redis-server
enabled
$ sudo systemctl disable redis-server
Synchronizing state of redis-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable redis-server
Removed /etc/systemd/system/redis.service.
$ sudo systemctl stop redis-server
Ответ 14
В моем случае это было:
/etc/init.d/redismaster stop
/etc/init.d/redismaster start
Чтобы узнать, каково ваше имя службы, вы можете запустить:
sudo updatedb
locate redis
И он покажет вам все файлы Redis в вашей системе.
Ответ 15
Другой способ может быть:
brew services stop redis
Ответ 16
Следующее работало у меня на MAC
ps aux | grep 'redis-server' | awk '{print $2}' | xargs sudo kill -9
Ответ 17
Я не знаю специально для redis, но для серверов вообще:
Что такое ОС или дистрибутив? Часто будет команда stop или /etc/init.d/..., которая сможет искать существующий pid в файле pid.
Вы можете посмотреть, какой процесс уже привязан к порту с помощью sudo netstat -nlpt
(параметры linux, другие варианты netstat будут меняться) и сигнализировать о его остановке. Я бы не использовал kill -9
на работающем сервере, если нет другого сигнала или метода для его закрытия.
Ответ 18
Команды ниже работают для меня на сервере Ubuntu
$ service /etc/init.d/redis_6379 stop
$ service /etc/init.d/redis_6379 start
$ service /etc/init.d/redis_6379 restart
Ответ 19
Если вы знаете, на каком порту (по умолчанию: 6379) работает ваш сервер Redis, вы можете перейти с параметром 1 или проверить процесс Redis, и вы можете убить с помощью параметра 2.
Опция 1:
Убить процесс в порту:
check : sudo lsof -t -i:6379
kill : sudo kill 'sudo lsof -t -i:6379'
вариант 2:
Найдите ранее работающий сервер Redis:
ps auxx | grep redis-server
Убить конкретный процесс, найдя PID (ID процесса) - Redis Sever
kill -9 PID
Теперь запустите ваш сервер Redis с
redis-server /path/to/redis.conf
Ответ 20
В MacOSX,
Это то, что сработало для меня
/etc/init.d/redis restart
/etc/init.d/redis stop
/etc/init.d/redis start
Ответ 21
Одна вещь, чтобы проверить, не работают ли команды redis для вас, состоит в том, действительно ли создается ваш redis-server.pid. Вы указываете место, где находится этот файл
/etc/systemd/system/redis.service
и он должен иметь раздел, который выглядит примерно так:
[Service]
Type=forking
User=redis
Group=redis
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
PIDFile=/run/redis/redis-server.pid
TimeoutStopSec=0
Restart=always
Проверьте расположение и права доступа к каталогу PIDFile (в моем случае "/run/redis"). Я пытался перезапустить службу, вошедшую в систему как развертывание, но разрешения каталога были указаны как
drwxrwsr-x 2 redis redis 40 Jul 20 17:37 redis
Если вам нужно обновить разрешения Linux, проверьте это. Но проблема заключалась в том, что я выполнял перезапуск как мой пользователь развертывания, права доступа которого выше, rx, не позволяя моему пользователю писать в каталог PIDFile.
Как только я понял это, я вошел в систему, используя root, повторно выполнил команду restart на redis (service redis restart
), и все service redis restart
. Это была головная боль, но, надеюсь, это сэкономит кому-то немного времени.
Ответ 22
Если вы запускаете Redis в Docker-контейнере, ни один из настоящих ответов не поможет. Вы должны остановить контейнер Redis. В противном случае процесс повторного запуска будет возобновляться.
$ docker ps
CONTAINER ID IMAGE PORTS
e1c008ab04a2 bitnami/redis:4.0.8-r0 0.0.0.0:6379->6379/tcp
$ docker stop e1c008ab04a2
e1c008ab04a2