redis-server2 正在启动-停止守护进程:警告:此系统无法跟踪长度超过 15 个字符的进程名称

redis-server2 正在启动-停止守护进程:警告:此系统无法跟踪长度超过 15 个字符的进程名称

因此我需要在同一台服务器上运行 2 个 redis 实例。我的服务器是 Ubuntu 14.04 机器。

所以我跟着本指南,但不是严格意义上的。我的意思是,我决定不修改 redis init 脚本(来自 Ubuntu 软件包),而是为第二个实例创建新脚本,而将第一个实例的原始脚本保持不变。

因此,我所做的是:

1)为新实例创建新脚本(它将在 6380 端口运行,而不是默认的 6379 端口):

sudo cp /etc/init.d/redis-server /etc/init.d/redis-server6380

2)修改 /etc/init.d/redis-server6380 使其略有不同。而不是:

DAEMON=/usr/bin/redis-server
DAEMON_ARGS=/etc/redis/redis.conf
NAME=redis-server
DESC=redis-server

RUNDIR=/var/run/redis
PIDFILE=$RUNDIR/redis-server.pid

它会:

NAME=`basename ${0}`
DAEMON=/usr/bin/redis-server
DAEMON_ARGS=/etc/redis/${NAME}.conf
DESC=${NAME}

RUNDIR=/var/run/redis
PIDFILE=$RUNDIR/${NAME}.pid

3)然后复制配置:

cp /etc/redis/redis-server.conf /etc/redis/redis-server6380.conf

编辑新的 redis-server6380.conf 文件如下:

pidfile /var/run/redis/redis-server.pid
port 6379
logfile /var/log/redis/redis-server.log
dir /var/lib/redis

到:

pidfile /var/run/redis/redis-server6380.pid
port 6380
logfile /var/log/redis/redis-server6380.log
dir /var/lib/redis6380

4)然后创建工作目录:

sudo mkdir /var/lib/redis6380 && sudo chown redis.redis /var/lib/redis6380

我现在遇到的一个小问题是,很难检查实例是否正在运行。

之前,我想我可以直接运行:

service redis-server status

并了解redis是否正在运行。

现在,如果我这样做,我会得到:

$ service redis-server status
redis-server is not running

即使第一个实例正在运行!对于第二个实例,我得到:

$ service redis-server6380 status
redis-server6380 is start-stop-daemon: warning: this system is not able to track process
names longer than 15 characters, please use --exec instead of --name.
not running

但为什么呢?我不明白……

如果我使用/etc/init.d/redis-server*而不是,也会发生同样的事情service。我现在知道检查它们是否真的在运行的黑客方法是这样的:

$ ps aux | grep redis
andrew     365  0.0  0.1  10468  2236 pts/0    S+   07:17   0:00 grep --color=auto redis
redis    22521  0.0  1.3  50860 23132 ?        Ssl  Feb19   4:38 /usr/bin/redis-server 0.0.0.0:6379
redis    52953  0.0  0.5  38572  8860 ?        Ssl  Feb25   0:23 /usr/bin/redis-server 0.0.0.0:6380

但我不想采取这种做法:(

相关内容