使用 Upstart 以 redis 用户身份启动 Redis 时出现问题

使用 Upstart 以 redis 用户身份启动 Redis 时出现问题

我正在尝试通过 Upstart 以用户(名为 redis)身份启动 redis-server。我的 /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

看起来不错,对吧?我使用以下命令启动 redis-server

$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-server 肯定没有运行。我们来尝试手动执行 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.

然后我就退出了。我不知所措。有什么想法吗?

答案1

您之所以被注销,是因为当 exec 补充时,shell 存在。无论命令成功还是失败(exec echo hello例如 try),这都是正确的。因此,为了避免被注销,请改用以下方法:

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

这可能无法解决您的问题,但可以让您的测试更快。

答案2

好的,问题是由于 redis 用户无法从 /home/root 执行 redis-server 二进制文件而引起的。一些研究表明,许多人在 CentOS 下使用 Upstart 时遇到了问题。最终的解决方案是使用这个Redis init.d 脚本

相关内容