centos7 systemctl 啟動 Redis 失敗


轉自:http://sloger.info/posts/systemd-failed-to-start-redis-in-gentoo

今天啟動 Redis 時阻塞很長時間,之后顯示啟動失敗,啟動狀態如下。

systemd[1]: redis.service start operation timed out. Terminating.
systemd[1]: Failed to start A persistent key-value database.
systemd[1]: Unit redis.service entered failed state.

看了下 service 文件,發現 Systemd 啟動命令如下

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

手動運行這條命令,發現是正常的,所以猜想是 service 文件的問題,后來發現只需要把 [Service] 部分的 Type=forking 注釋掉就行了。

[Service]
# Type=forking
# PIDFile=/var/run/redis/redis.pid
ExecStart=/usr/sbin/redis-server /etc/redis.conf
User=redis
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 off


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM