YaST 服务管理器中没有 redis@.service

  1. 系统:15.0
  2. 已经安装了redis的包
  3. redis配置文件中设置为
    daemonize yes
    supervised systemd
    
  4. /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
    
  5. 手动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赞

改回来了,用systemctl start redis@default也正常启动了。非常感谢!!!
:fu::fu::fu:

本主题在最后一个回复创建后60分钟后自动锁定。不再允许添加新回复。