首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redis Daemon不创建PID文件

Redis Daemon不创建PID文件
EN

Stack Overflow用户
提问于 2014-08-26 21:08:03
回答 11查看 66.8K关注 0票数 45

Redis启动脚本应该在启动时创建一个pid文件,但是我已经确认了我可以找到的所有设置,而且也没有创建pid文件。

我安装了redis:

代码语言:javascript
复制
$ yum install redis
$ chkconfig redis on
$ service redis start

在我的配置文件(/etc/redis.conf)中,我检查了以确保启用了这些文件:

代码语言:javascript
复制
daemonize yes
pidfile /var/run/redis/redis.pid

在启动脚本(/etc/init.d/redis)中有:

代码语言:javascript
复制
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兆瓦)

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2014-08-27 14:10:25

问题是用户redis没有创建pid文件(或它所在的目录)的权限。修正:

代码语言:javascript
复制
sudo mkdir /var/run/redis
sudo chown redis /var/run/redis

然后我杀了她,重新启动了redis,果然,有redis.pid

票数 28
EN

Stack Overflow用户

发布于 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"

它应该是这样的:

代码语言:javascript
复制
[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文件。

票数 49
EN

Stack Overflow用户

发布于 2018-11-05 19:34:35

在我的Ubuntu18.04上,我也犯了同样的错误。

redis报告的错误(在/var/log/redis/redis-server.log上):

代码语言:javascript
复制
 # Creating Server TCP listening socket ::1:6379: bind: Cannot assign requested address

这是因为我在这个主机上禁用了IPv6,Ubuntu的redis-server包(version 5:4.0.9-1)附带了:

代码语言:javascript
复制
bind 127.0.0.1 ::1

编辑/etc/redis/redis.conf和删除::1地址解决了这个问题。示例:

代码语言:javascript
复制
bind 127.0.0.1

编辑:正如注释中所指出的(感谢@nicholas-vasilaki和@tommyalvarez),默认情况下,redis只允许来自本地主机的连接。注释所有行,使用:

代码语言:javascript
复制
# bind 127.0.0.1 ::1

工作,但使redis从网络监听(不仅从本地主机)。

更多细节可以在redis配置文件中找到。

票数 47
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25515166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档