Linux中的systemctl和service

Linux服务管理的两种方式service和systemctl
  1. 先说说service:
    service命令其实是去/etc/init.d目录下,去执行相关程序,init.d目录包含许多系统各种服务的启动和停止脚本。当Linux启动时,会寻找这些目录中的服务脚本,并根据脚本的run level确定不同的启动级别。参考这篇文章,了解系统启动的过程及centos和ubuntu的区别。链接:https://blog.csdn.net/woshishui918/article/details/79493368。
    service的常用方式:
    1.格式:service
    打印指定服务的命令行使用帮助。
    2.格式:service start
    启动指定的系统服务
    3.格式:service stop
    停止指定的系统服务
    4.格式:service restart
    重新启动指定的系统服务,即先停止(stop),然后再启动(start)。
    5.格式:chkconfig --list
    查看系统服务列表,以及每个服务的运行级别。
    6.格式:chkconfig on
    设置指定服务开机时自动启动。
    7.格式:chkconfig off
    设置指定服务开机时不自动启动。
    8.格式:ntsysv
    以全屏幕文本界面设置服务开机时是否自动启动。
  • 通过配置启动redis案例来了解下。redis的安装参考我的这篇文章:https://www.jianshu.com/p/77c64765ba65。
    1.在/usr/local/redis文件夹中找到redis.conf配置文件。设置redis.conf中daemonize为yes,确保守护进程开启,也就是在后台可以运行
    image.png

    2.复制redis配置文件(启动脚本需要用到配置文件内容,所以要复制)
    在/etc下新建redis文件夹 mkdir /etc/redis。
    把安装redis目录里面的redis.conf文件复制到/etc/redis/6379.conf里面,6379.conf是取的文件名称,启动脚本里面的变量会读取这个名称,所以要是redis的端口号改了,这里也要修改。
    cp /usr/local/redis/redis.conf /etc/redis/6379.conf
    说明:/usr/local/目录一般为用户安装程序的目录。/etc/目录为系统配置文件,像/etc/init.d目录用来配置程序的开机启动
    3.复制redis启动脚本
    redis启动脚本一般在redis根目录的utils,如果不知道路径,可以先查看路径
    sudo find / -name redis_init_script
    /usr/local/redis/utils/redis_init_script
    复制启动脚本到/etc/init.d/redis文件中
    cp /usr/local/redis/utils/redis_init_script /etc/init.d/redis
    4.修改启动脚本参数
    sudo vim /etc/init.d/redis
    在/etc/init.d/redis文件的头部添加下面两行注释代码,也就是在文件中#!/bin/sh的下方添加
    chkconfig: 2345 10 90
    description: Start and Stop redis
    image.png

    同时还要修改参数,指定redis的安装路径
    image.png

    打开redis命令:service redis start
    关闭redis命令:service redis stop
    设为开机启动:chkconfig redis on
    设为开机关闭:chkconfig redis off
    2. systemctl服务管理方式
    参考链接:https://www.jianshu.com/p/b67c0fc7c170
  • ystemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。
    在systemd管理体系中,被管理的deamon(守护进程)称作unit(单元),对于单元的管理是通过命令systemctl来进行控制的。unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件主要包含了系统服务、监听socket、保存的系统快照以及其它与init相关的信息。
    用service来管理服务的时候,是在/etc/init.d/目录中创建一个脚本文件,来管理服务的启动和停止;
    在systemctl中,也类似,文件目录有所不同,在/lib/systemd/system目录下创建一个脚本文件redis.service,里面的内容如下:


    image.png

    [Unit] 表示这是基础信息
    Description 是描述
    After 是在那个服务后面启动,一般是网络服务启动后启动
    [Service] 表示这里是服务信息
    ExecStart 是启动服务的命令
    ExecStop 是停止服务的指令
    [Install] 表示这是是安装相关信息
    WantedBy 是以哪种方式启动:multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。

  1. 创建软链接
    创建软链接是为了下一步系统初始化时自动启动服务
    ln -s /lib/systemd/system/redis.service /etc/systemd/system/multi-user.target.wants/redis.service
  2. 刷新配置
    刚刚配置的服务需要让systemctl能识别,就必须刷新配置
    sudo systemctl daemon-reload
  3. 启动、重启、停止
    启动redis:systemctl start redis
    重启redis:systemctl restart redis
    停止redis: systemctl stop redis
  4. 开机自启动
    redis服务加入开机启动:systemctl enable redis
    禁止开机启动:systemctl disable redis
  5. 查看状态:systemctl status redis

你可能感兴趣的:(Linux中的systemctl和service)