• 三十、CentOS 7之systemd


    一、系统启动流程

    POST --> bootloader  --> MBR工作 --> kernel(initramfs/initrd) --> ro rootfs --> init

    二、init

    用户空间的一切与管理相关的事务由Init程序完成,特权操作发起syscall由内核完成

    2.1、init分类

      1)、CentOS 5 :SysV   /sbin/init 

            大量进程切换

            进程的依赖关系

      2)、CentOS 6:Upstart   命令名:init

          dbus机制,进程间通信,取消依赖

      3)、CentOS 7 :Systemd 

    2.2、Systemd新特性:

      * 系统引导时,并行启动进程,类似于upstart

      * 按需激活进程: 节约内存,启动速度快

      * 支持系统快照

      * 基于依赖控制服务启动逻辑 

    三、系统管理的核心概念: systemd unit

    3.1、配置文件进行标识和配置:文件中主要包含了系统服务、监听socket、保存的系统快照snapshot服务程序、以及其它与init相关的信息

      配置文件

        /usr/lib/systemd/system(重要文件)

        /run/system/system

        /etc/systemd/system (重要文件)

        注:不需要执行权限,仅为配置文件而已

    3.2、Uint的类型:

        Service unit :文件扩展名为.service , 用于定义系统服务(管理服务)       

            /etc/systemd/system/httpd.service

            /usr/lib/systemd/system

            每一个脚本控制一个服务,每个脚本对应一个service 的unit

        Target unit :文件扩展名为.target ,用于模拟实现“运行级别”

    wKiom1m4jMDhVYvaAACMeusBSo4571.png

    3.2、Unit关键特性(按需激活)

      基于socket的激活机制:系统启动用不到的服务,由socketunit代为监听,在被访问时临时启动服务。

      基于bus的激活机制:支持dbus进程间通信的程序,可以按需激活

      基于device激活机制:在某个硬件设备激活或变得可用时的激活机制

      基于path激活机制:某个文件路径变得可用或激活时,激活相关服务

      基于快照激活机制:保存各unit的当前状态信息于持久存储设备中,必要时能够自动载入

      向后兼容SysV init脚本:兼容有限,支持有限个运行级别

    3.3、不兼容

      * 没有脚本灵活,systemctl命令格式固定

      * 非由systemd服务启动的服务,systemd无法与之通信即systemd服务不能控制

      * systemd级别切换时,只有将运行中的服务才会停止,停止中的服务才会启动。   

       SysV脚本init切换运行级别时,例如3-->2
          将/etc/rc.d/rc.2/*下的所有服务程序
              K* stop
              S* start

      * systemctl不会读取标准输入数据流

      * 跟用户的PATH环境没有关系(即使用绝对路径)

      * unit均受5min超时时长,时间一过,将会退出

    四、CentOS 7 systemd管理系统服务

    4.1、基本管理

        条件式重启:服务启动才重启,没启动就不作任何操作

    wKioL1m4kBST1_7WAAA1CKh4FbM498.png

    wKiom1m4km7hgjfuAAAii5R5KRw296.png

     

    4.2、服务状态注解 

    wKioL1m4kECSeih1AABHNNRcvPk112.png

    4.3、查看服务启动或停止、依赖关系、查看运行级别

    systemctl list-units --type TYPE [--all]

    查看所有服务的状态
      systemctl list-units --type service --all
    查看所有运行(激活)状态的服务
      systemctl list-units --type service

    查看单个服务是否处于运行状态
      systemctl is-active name.service

    显示服务的依赖关系
      systemctl list-dependencies name.service

    a)、服务状态注解

    wKiom1m4kjWyT_RYAAAmthDWOSM812.png

     

    b)、查看开机是否自动启动

    查看所有服务开机是否自动启动
       systemctl list-unit-files --type service

    查看单个服务开机是否开机自动启动 (记住)

        systemctl is-enabled name.service

    c)、设定服务开机是否自启

    wKiom1m4kt_yTKfWAAAr5DWsMg4880.png

    d)、运行级别管理

    name.target :

     .target后缀配置文件:模拟某一级别所需要依赖的服务定义在一起能够同时启动
     
    注:对centos7来说:2、3、4级别都一样

    wKioL1m4k7qRWRbHAAA30QKGqL8976.png

    e)、级别管理

    级别切换

        centos 6              centos 7 

      init N ===》 systemctl isolate name.target

    查看运行级别
       systemctl list-units --type target
      systemctl list-units --type target -all

      获取默认运行级别:

      /etc/inittab ==》 systemctl get-default

      修改默认级别:

      /etc/inittab ==》 systemctl set-default name.target

    注:设定默认运行级别靠的是/etc/systemd/system/default.target
    设定图形:
        删除/etc/systemd/system/default.target
        ln -s /usr/lib/systemd/system/graphical.target /etc/systemd/system/default.target
    设定字符:
        删除/etc/systemd/system/default.target
        ln -s /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target

    f)、切换至紧急救援模式:

      systemctl  rescue | emergency

          resuce :服务没有启动,驱动加载(renlevel1.target/rescue.target)==》init 1

          emergency:服务没有启动,驱动没有加载,没有初始化==》 启动过程中向内核传递emergency参数即可

    g)、其它常用命令

    关机 : systemctl halt | poweroff

    重启: systemctl  reboot

    挂起:systemctl  suspend (存储系统状态与内存中,关机数据会丢失)

    保存快照:systemctl hibernate (系统重启后,不用操作自动操作)

    快照并挂起: systemctl hybrid-sleep

    重置错误状态的unit:

        systemctl  reset-failed  name.service

    kill指明的unit

        systemctl  kill  name.TYPE

    查看服务是否处于错误状态

        systemctl  is-failed  name.service

    显示服务的属性信息

        systemctl  show  name.service

    h)、unit配置文件

    [Unit]
    Description=描述信息
    After=定义依赖关系
    
    [Service] 程序 执行的命令 启动 重载 停止

        

  • 相关阅读:
    npm执行清理缓存失败npm cache clean
    Vue中计算属性(computed)和监听属性函数watch的比较
    vue生命周期函数
    vue自定义指令
    vue 自定义过滤器
    vue 自定义全局按键修饰符
    线性回归模型
    python常用模块
    KNN算法的实现
    python集合(set)的运算
  • 原文地址:https://www.cnblogs.com/liuzhiyun/p/11468468.html
Copyright © 2020-2023  润新知