Centos7系统下编写systemd脚本设置redis开机自启动

时间:2022-10-06 16:45:58

今天想设置redis开机自启动,我觉得这样子比较好,但是在网上找了很长时间发现大家都是基于chkconfig的写法来设置的,并不能由systemd进程来统一管理,所以这里我自己编写了一个,希望大家可以提出宝贵意见。

首先是在配置文件将redis的进程设置为daemon守护模式运行

Centos7系统下编写systemd脚本设置redis开机自启动

接下来编写unit代码:

[root@ELK-chaofeng04 system]# cat redis.service 
[Unit]
Description=nginx scripts 
After=network.target remote-fs.target nss-lookup.target syslog.target

[Service]
Type=forking
Password=123456
PidPort=6379
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ExecStop=/usr/local/redis/bin/redis-cli -a ${Password} -p ${PidPort} shutdown

[Install]
WantedBy=multi-user.target

将这段代码贴在配置文件中,然后命名为redis.service并放在/usr/lib/systemd/system目录下即可。最后使用systemctl  enable redis即可设置成功开启自启动。

首先需要说的有以下几点:

1、unit单元中没有添加status查看状态,我觉得我这里一般通过判断端口来查看redis进程是否正常的。

2、在Execstart中,我是自定义了一个redis的配置文件,并启动的时候指定一下配置文件的绝对路径。

3、在ExecStop中,我用到了-a参数,后面跟的是密码,因为redis的登录密码我已经在配置文件中开启认证了,所以使用redis-cli登录的时候需要指定密码,否则不能关闭redis进程。关于密码的设置我在之前的博客也有可以查看。

不足:

1、unit单元中的路径都是给定的,比如配置文件的路径等,所以移动配置文件的时候需要修改unit

2、密码在配置文件中修改以后,也需要在unit单元中进行修改才可以。这样子造成一些麻烦。

3、没有status状态查看。