Redis启动脚本应该在启动时创建一个pid文件,但是我已经确认了我可以找到的所有设置,而且也没有创建pid文件。
我安装了redis:
$ yum install redis
$ chkconfig redis on
$ service redis start在我的配置文件(/etc/redis.conf)中,我检查了以确保启用了这些文件:
daemonize yes
pidfile /var/run/redis/redis.pid在启动脚本(/etc/init.d/redis)中有:
exec="/usr/sbin/$name"
pidfile="/var/run/redis/redis.pid"
REDIS_CONFIG="/etc/redis.conf"
[ -e /etc/sysconfig/redis ] && . /etc/sysconfig/redis
lockfile=/var/lock/subsys/redis
start() {
[ -f $REDIS_CONFIG ] || exit 6
[ -x $exec ] || exit 5
echo -n $"Starting $name: "
daemon --user ${REDIS_USER-redis} "$exec $REDIS_CONFIG"
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $name: "
killproc -p $pidfile $name
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}这些是默认情况下随安装而来的设置。知道为什么没有创建pid文件吗?我要把它用在Monit上。(系统为6.4兆瓦)
发布于 2014-08-27 14:10:25
问题是用户redis没有创建pid文件(或它所在的目录)的权限。修正:
sudo mkdir /var/run/redis
sudo chown redis /var/run/redis然后我杀了她,重新启动了redis,果然,有redis.pid
发布于 2020-03-27 12:17:34
对于那些体验Debian破坏者的人:
编辑nano /etc/systemd/system/redis.service
并将这一行添加到redis [Service]下面
ExecStartPost=/bin/sh -c "echo $MAINPID > /var/run/redis/redis.pid"
它应该是这样的:
[Service]
Type=forking
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
ExecStop=/bin/kill -s TERM $MAINPID
ExecStartPost=/bin/sh -c "echo $MAINPID > /var/run/redis/redis.pid"
PIDFile=/run/redis/redis-server.pid然后:
sudo systemctl daemon-reload
sudo systemctl restart redis.service
检查redis.service状态:
sudo systemctl status redis.service现在应该显示pid文件。
发布于 2018-11-05 19:34:35
在我的Ubuntu18.04上,我也犯了同样的错误。
redis报告的错误(在/var/log/redis/redis-server.log上):
# Creating Server TCP listening socket ::1:6379: bind: Cannot assign requested address这是因为我在这个主机上禁用了IPv6,Ubuntu的redis-server包(version 5:4.0.9-1)附带了:
bind 127.0.0.1 ::1编辑/etc/redis/redis.conf和删除::1地址解决了这个问题。示例:
bind 127.0.0.1编辑:正如注释中所指出的(感谢@nicholas-vasilaki和@tommyalvarez),默认情况下,redis只允许来自本地主机的连接。注释所有行,使用:
# bind 127.0.0.1 ::1工作,但使redis从网络监听(不仅从本地主机)。
更多细节可以在redis配置文件中找到。
https://stackoverflow.com/questions/25515166
复制相似问题