银河麒麟服务器v10 sp1 redis开机自动启动

接上一篇:银河麒麟服务器v10 sp1 安装 redis_csdn_aspnet的博客-CSDN博客

 将redis_init_script文件复制到/etc/init.d下,重命名为redisd:

root@xxx-pc:cp /usr/local/redis/redis-7.0.11/utils/redis_init_script /etc/init.d/redisd

内容如下:

#!/bin/sh
# chkconfig: 2345 10 90
# description: Start and Stop redis
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

### BEGIN INIT INFO
# Provides:     redis_6379
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Redis data structure server
# Description:          Redis data structure server. See https://redis.io
### END INIT INFO

REDISPORT=6379
#EXEC=/usr/local/bin/redis-server
#CLIEXEC=/usr/local/bin/redis-cli
EXEC=/usr/local/redis/redis-7.0.11/src/redis-server
CLIEXEC=/usr/local/redis/redis-7.0.11/src/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

给文件授权,此步看需要执行

root@xxx-pc:/usr/local/redis/redis-7.0.11# sudo chmod +x /etc/init.d/redisd

执行:

root@xxx-pc:/usr/local/redis/redis-7.0.11# sudo update-rc.d redisd defaults

root@xxx-pc:/usr/local/redis/redis-7.0.11# service redisd start

启动并没有成功:

 经过一番查找发现:

Ubuntu18版本开始,systemd被用于系统进程启动,d表示守护进程daemon,也就是系统后台运行的服务进程,取代了之前的initd。

现代 Linux 都采用 systemd 来作为守护进程,例如在 Ubuntu 18.04 上它们都指向同一个 systemd

而 init 和 systemd 的区别如下:

init 和 systemd 都是 Linux 的 init 守护进程,但最好使用后者,因为它在现代的 Linux 发行版中很常用。init 使用 service,而 systemd 用 systemctl 管理 Linux 服务。

init 守护进程是 Linux 内核执行的第一个进程,它的进程 ID (PID) 始终为 1。它的目的是初始化、管理和跟踪系统服务和守护进程。换句话说,init 守护进程是系统上所有进程的父进程。

要创建一个服务,需要编写 shell 脚本,并存储在 /etc/init.d/ 目录下,通过 service 命令启动、停止、重新启动服务。例如如下的 /etc/init.d/myservice 脚本。

以下为一个 myservice.service 文件的样例:

[Unit]
Description=Some Description
Requires=syslog.target
After=syslog.target
 
[Service]
ExecStart=/usr/sbin/<command-to-start>
ExecStop=/usr/sbin/<command-to-stop>
 
[Install]
WantedBy=multi-user.target

根据样例修改,并定义文件名为redis-server.service:

[Unit]
Description=Redis server
After=syslog.target network.target remote-fs.target nss-lookup.target
 
[Service]
Type=forking
ExecStart=/bin/bash -c '/usr/local/redis/redis-7.0.11/src/redis-server /usr/local/redis/redis-7.0.11/redis.conf'
ExecStop=/bin/bash -c '/usr/local/redis/redis-7.0.11/src/redis-cli shutdown'
Restart=always
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

上面ExecStart与ExecStop命令,启动服务失败,可以不使用bin/bash -c命令,bin/bash可以删除

ExecStart=/bin/bash -c '/usr/local/redis/redis-7.0.11/src/redis-server /usr/local/redis/redis-7.0.11/redis.conf'
ExecStop=/bin/bash -c '/usr/local/redis/redis-7.0.11/src/redis-cli shutdown'

可修改为:

ExecStart=/usr/local/redis/redis-7.0.11/src/redis-server /usr/local/redis/redis-7.0.11/redis.conf
ExecStop=/usr/local/redis/redis-7.0.11/src/redis-cli shutdown

再次尝试启动redis服务。

以上路径修改为你自己的目录或路径即可。

root@xxx-pc:~# cp /home/xxx/redis-server.service /lib/systemd/system/redis-server.service

完成后按顺序执行:

sudo systemctl daemon-reload

sudo systemctl enable redis-server.service

sudo systemctl status redis-server.service

sudo systemctl start myservice.service

说明redis服务启动成功了。 

systemctl说明:

查看某个服务的状态:
sudo systemctl status myservice.service

启动,停止,重启服务:
sudo systemctl start myservice.service
sudo systemctl stop myservice.service
sudo systemctl restart myservice.service

服务开机自启动,取消开机自启动:
sudo systemctl enable myservice.service
sudo systemctl disable myservice.service

重新加载某个服务,所有服务的配置文件:
sudo systemctl reload myservice.service
sudo systemctl daemon-reload

查看某个服务设置的参数:
sudo systemctl show myservice.service

杀死某个服务的所有子进程:
sudo systemctl kill myservice.service

下一篇:银河麒麟服务器v10 sp1 部署 redis 及redis gui 客户端工具_csdn_aspnet的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/hefeng_aspnet/article/details/131532768
今日推荐