Я пытаюсь запустить Redis-сервер как пользователь (называется Redis) через Upstart. Мой /etc/init/redis-server.conf выглядит так:

description "redis server"

start on runlevel [23]
stop on shutdown

exec sudo -u redis /usr/local/bin/redis-server /var/lib/redis/redis.conf

Выглядит хорошо, правда? Я запускаю редис-сервер используя

$start redis-server
redis-server start/running, process 16808
$redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
$ps ax | grep ps 168
16810  tty1    R+     0:00 ps ax
16811  tty1    S+     0:00 grep 168

Таким образом, сервер Redis определенно не работает. Давайте попробуем выполнить команду Upstart вручную, не так ли?

exec sudo -u redis /usr/local/bin/redis-server /var/lib/redis/redis.conf
[16852] 19 Jun 10:37:21 # Can't chdir to './': Permission denied
Connection to 10.19.2.94 closed.

И тогда я выхожу из системы. Я в недоумении. Есть идеи?

2 ответа2

1

Вы выходите из системы, потому что когда exec дополняет, оболочка существует. Это верно независимо от того, выполняется команда успешно или нет (например, попробуйте exec echo hello ). Поэтому, чтобы избежать выхода из системы, используйте вместо этого:

sudo -u redis /usr/local/bin/redis-server /var/lib/redis/redis.conf

Это может не решить вашу проблему, но ускорит тестирование.

0

Итак, проблема была вызвана тем, что пользователь redis не смог выполнить двоичный файл сервера redis из /home /root. Некоторые исследования показывают, что у многих людей были проблемы с использованием Upstart под CentOS. Возможным решением было использовать этот сценарий Redis init.d.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .