银河麒麟服务器v10 sp1 redis开机自动启动 您所在的位置:网站首页 麒麟系统自启动脚本怎么设置 银河麒麟服务器v10 sp1 redis开机自动启动

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

2024-06-25 04:38| 来源: 网络整理| 查看: 265

接上一篇:银河麒麟服务器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/ ExecStop=/usr/sbin/   [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可以删除(本文正常使用,并没有删除bin/bash -c命令,可正常启动)

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博客



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有