- 系统:15.0
- 已经安装了redis的包
- redis配置文件中设置为
daemonize yes
supervised systemd
- /usr/lib/systemd/system/redis@.service
[Unit]
Description=Redis
After=network.target
PartOf=redis.target
[Service]
Type=forking
User=redis
Group=redis
PrivateTmp=true
PIDFile=/var/run/redis/default.pid
ExecStart=/usr/sbin/redis-server /etc/redis/default.conf
Restart=on-failure
[Install]
WantedBy=multi-user.target redis.target
- 手动redis-server可以正常启动redis
但是我在服务管理器中找不到redis服务,直接用service命令也找不到redis,不懂服务的原理,特来请教。
另,有些service文件名里面带@,是什么意思呢?
你的 redis@ 服务被你改过了?要改回来。
redis@ 这类服务叫 instantiated service,也就是模版服务,模板里面的 %i 表示你在 @ 后面传进来的字符串。
比如我有一个 discourse.conf 的 redis 配置,我启动它,是这样:
systemctl start redis@discourse
因为 redis@.service 里面的 ExecStart=/usr/sbin/redis-server /etc/redis/%i.conf,上面那个命令实际上运行的是
/usr/sbin/redis-server /etc/redis/discourse.conf
这样就可以启动多个 instance(当然应用程序本身要支持这么做)。你用 systemctl status redis@.service 也是什么都看不到的,要用 systemctl status redis@discourse.service 才能看到。
1赞
system
(system)
关闭
4
本主题在最后一个回复创建后60分钟后自动锁定。不再允许添加新回复。