【Redis】centos7 systemctl 启动 Redis 失败

今天启动 Redis 时阻塞很长时间,之后显示启动失败,启动状态如下。

  1. systemd[1]: redis.service start operation timed out. Terminating.

  2. systemd[1]: Failed to start A persistent key-value database.

  3. systemd[1]: Unit redis.service entered failed state.

看了下 service 文件,发现 Systemd 启动命令如下

ExecStart=/usr/sbin/redis-server /etc/redis.conf

手动运行这条命令,发现是正常的,所以猜想是 service 文件的问题,后来发现只需要把 [Service] 部分的 Type=forking 注释掉就行了。

  1. [Service]

  2. # Type=forking

  3. # PIDFile=/var/run/redis/redis.pid

  4. ExecStart=/usr/sbin/redis-server /etc/redis.conf

  5. User=redis

  6. Group=redis

之后重新加载 Service 文件并启动 Redis 服务

sudo systemctl daemon-reload
sudo systemctl start redis

Man pages 对 Systemd 服务启动类型 Type 的解释如下

If set to forking, it is expected that the process configured with ExecStart= will call fork() as part of its start-up. The parent process is expected to exit when start-up is complete and all communication channels are set up. The child continues to run as the main daemon process. This is the behavior of traditional UNIX daemons. If this setting is used, it is recommended to also use the PIDFile= option, so that systemd can identify the main process of the daemon. systemd will proceed with starting follow-up units as soon as the parent process exits.

因为 Redis 配置文件里配置的是
daemonize no

这个错误提示意味着系统无法找到redis.service单元。这可能是由于Redis未正确安装或者Redis服务单元文件未正确配置导致的。 首先,确保Redis已经正确安装在系统中。你可以通过运行以下命令来安装Redis: ``` sudo apt update sudo apt install redis-server ``` 安装完成后,尝试启动Redis服务: ``` sudo systemctl start redis ``` 如果仍然出现相同的错误,请检查是否存在redis.service单元文件。你可以使用以下命令来查找: ``` sudo find / -name "redis.service" ``` 如果未找到redis.service文件,那么可能是Redis未正确安装或者Redis服务单元文件丢失。在这种情况下,你可以尝试重新安装Redis来解决该问题。 如果找到了redis.service文件,但仍然无法启动Redis,可能是redis.service配置有问题。你可以编辑该文件并确保正确配置。通常,redis.service文件位于`/etc/systemd/system/`目录下。可以使用以下命令来编辑该文件: ``` sudo nano /etc/systemd/system/redis.service ``` 在编辑器中,检查以下内容是否正确配置: ``` [Unit] Description=Redis In-Memory Data Store After=network.target [Service] ExecStart=/usr/bin/redis-server /etc/redis/redis.conf ExecStop=/usr/bin/redis-cli shutdown Restart=always [Install] WantedBy=multi-user.target ``` 确保ExecStart行中的路径和配置文件路径是正确的。保存文件后,尝试重新启动Redis服务: ``` sudo systemctl start redis ``` 这应该能够解决"Failed to start redis.service: Unit not found."错误。如果问题仍然存在,你可能需要进一步检查系统配置或查看其他错误日志来找出问题所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜太小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值