systemd

systemd

  • 启动流程:
    POST -> BIOS -> MBR bootloader -> kernel 临时根 -> 根文件系统 -> init

    • init
      能够管理、控制init进程的模块,就是init系统
      能够让系统在用户预定义的级别下运行
  • 设备管理器:

    • sysvinit : CentOS 5

      • 第一个广泛应用的init系统
      • 简单、稳定:

        • 只需要编写服务的启动脚本
          设置启动顺序时,通过连接即可完成
      • 执行效率较高,需要时间较长

        • 对新的Linux特性 支持不够好
    • upstart: CentOS 6

      • 启动速度大大提高
        反向兼容sysvinit
        设计更先进
    • systemd: CentOS 7

      • 替代了所有的sysvinit的功能,并且添加更多的功能。
        极大提高了启动速度
        标准化管理
        按需激活进程:分配套接字,但不启动服务
        系统状态快照

systemd配置:

  • 核心:unit
    由其相关配置文件进行标识、识别和配置;文件中主要包含了系统服务、监听的socket、保存的快照以及其他与init相关的信息;这些配置文件主要保存:

    • /usr/lib/systemd/system
    • /run/systemd/system
    • /etc/systemd/system
  • unit常见类型:

    • service类型:服务类型

      • 扩展名.service,用于定义系统服务;
    • socket类型:套接字类型

      • 扩展名.socket,标示进程间通信时使用到的socket文件
    • device类型:设备类型

      • 扩展名.device,定义内核能够识别的设备
    • mount类型:挂载点类型

      • 扩展名.mount,定义文件系统的默认挂载点
        cgroup:控制组; 实现内核资源合理分配的机制
    • automount类型:自动挂载类型

      • 扩展名.automount,定义文件系统自动挂载点设备
    • target类型:启动目标类型

      • 扩展名.target 用来模拟实现“运行级别”
    • snapshot类型:快照类型

      • 扩展名.snapshot,用来管理系统快照
    • swap类型:交换分区类型

      • 扩展名.swap,用来标识swap设备、管理和定义交换分区
    • path类型 监视文件类型

      • 扩展名.path,用来定义文件系统的某一文件或目录
    • timer 任务计划
      slice 资源控制
      scope 外部进程
  • 关键特性:

    1. 基于socket的激活机制
      socket与程序之间分离,可以先分配socket,不启动;
    2. 基于bus的激活机制
      若总线上存在对某一服务的访问,可以基于该请求,将设备激活
    3. 基于device的激活机制
      当接入新设备时,激活device unit、mount unit、automount unit
      首先创建设备文件,再自动挂载到某挂载点,若挂载点不存在,则自动创建 。
    4. 基于PATH的激活机制
    5. 系统快照
      能够将各个unit的当前状态信息保存至持久存储设备中
    6. 向后兼容 sysv init脚本
      /etc/init.d/服务脚本,也能够通过 systemd 启动
  • 不兼容的特性:

    1. systemctl的命令是固定不变的
    2. 若服务不是通过systemctl启动的服务,那么systemctl无法与之通信,无法控制服务;
  • 管理service units

    • CentOS 7:service类型的unit文件
      systemctl [OPTIONS…] COMMAND NAME.service
      1、命令:service -> systemctl
      2、启动服务:service NAME start -> systemctl start NAME.service
      3、关闭服务:service NAME stop -> systemctl stop NAME.service
      4、重启:service NAME restart -> systemctl restart NAME[.service]
      5、查看状态:service NAME status -> systemctl status NAME.service
      6、条件式重启:service NAME condrestart -> systemctl try-restart NAME.service
      若服务已启动,则重启;若服务未启动,则放弃操作
      7、重载或重启:systemctl reload-or-restart NAME.service
      可以重载则重载;重新加载未成功,则重新启动
      重载:在不停止的情况下重新加载配置文件
      重启:先stop再start
      8、重载或条件式重启:systemctl reload-or-try-restart NAME.service

      9、查看服务当前的激活状态:systemctl is-active NAME.service
      服务启动则返回active;服务未启动则返回unknown
      10、查看所有已激活的服务:systemctl list-units -t service
      11、查看所有服务:chkconfig –list -> systemctl list-units -t service -a

      12、设置服务开机自启:chkconfig NAME on -> systmectl enable NAME.service
      13、禁止服务开机自启:chkconfig NAME off -> systemctl disable NAME.service
      14、查看服务是否能开机自启:chkconfig –list NAME -> systemctl is-enabled NAME.service

      15、禁止某服务设定为开机自启:systemctl mask NAME.service
      16、取消此禁止:systemctl unmask NAME.service

      17、查看服务的依赖关系:systemctl list-dependencies NAME.service

  • 管理target units
    1、设置运行级别

    0 -> runlevel0.target  poweroff.target 
      1 -> runlevel1.target  rescue.target 
      2 -> runlevel2.target  multi-user.target
      3 -> runlevel3.target  multi-user.target
       4 -> runlevel4.target  multi-user.target
      5 -> runlevel5.target  graphical.target
      6 -> runlevel6.target  reboot.target

    2、切换运行级别:init N -> systemctl isolate NAME.target

    3、查看当前激活的运行级别:runlevel -> systemctl list-units -type target
    4、查看当前所有激活的运行级别:runlevel -> systemctl list-units -type target -a

    5、获取默认运行级别:systemctl get-default
    6、修改默认运行级别:systemctl set-default NAME.target
    7、centos 6:修改 /etc/inittab

    8、切换紧急救援模式(启动级别1):systemctl rescue
    9、切换emergency模式:

    其它相关命令:
    关机:systemctl halt,systemctl poweroff
    重启:systemctl reboot
    挂起:systemctl suspend
    快照:systemctl hibernate
    快照并挂起:systemctl hybrid-sleep

  • service units file:

    [unit]:定义与unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系;
      description: 描述信息;意义性描述;
      after:定义unit的启动次序;表示当前unit应该晚于哪些unit启动;其功能与before相反;
      requies:依赖到的其他units;强依赖,被依赖的units无法激活,当前unit即无法激活;
      wants:依赖到的其他units;弱依赖,被依赖的units无法激活,不妨碍当前unit激活
      conflicts:定义units间的冲突关系;
    
    [service]:与特定类型相关的专用选项;此处为service类型;
      type:用于定义影响execstart及相关参数的功能的unit进程启动类型;
        类型:
          simple:默认值,定义execstart选项指定的程序是主程序
          forking:定义execstart选项调用的某一子进程做主程序,之后父进程会退出。 
          oneshot:
          dbus:
          notify:类似于simple,进程在收到notify函数的通知时才启动
          idle:类似于simple
      ExecStart:指明启动unit要运行命令或脚本;execstartpre,execstartpost
      ExecStop指明停止unit要运行的命令或脚本;
      Restart
    
    [install]:定义由“systemctl enable”以及“systemctl disable”命令在实现服务启用或禁用时用到的选项;
      alias
      wantedby:被哪些units所依赖;弱依赖
      requiredby:被哪些units所依赖;强依赖

    注意:对于新创建的units文件或修改了的units文件,要通知systemd重载此配置文件;
    使用:systemctl daemon-reload

原创文章,作者:s,如若转载,请注明出处:http://www.178linux.com/76532

(0)
ss
上一篇 2017-05-21
下一篇 2017-05-21

相关推荐

  • 逻辑卷

    §·逻辑卷管理器LVM介绍 ※·LVM逻辑卷的简单描述 lvm(logical volume manager 逻辑卷管理器)的可以弹性的调整文件系统的容量,支持任何块设备,需要使用dm模块:device mapper设备映射,将一个或多个底层设备组织成一个逻辑设备的模块。 lvm的重点在于弹性的调整文件系统的容量,而并非在于数据的存储效率及安全上面…

    Linux干货 2016-08-30
  • 创建私有CA

      什么是CA   CA(Certificate Authority)证书颁发机构主要负责证书的颁发、管理以及归档和吊销。证书内包含了拥有证书者的姓名、地址、电子邮件帐号、公钥、证书有效期、发放证书的CA、CA的数字签名等信息。证书主要有三大功能:加密、签名、身份验证。 搭建私有CA 一、搭建CA服务器 1、生成密钥 ( ):表示此命令在子进程中运…

    Linux干货 2017-02-07
  • GREP命令学习笔记

    GREP命令,全称:Global search REgular expression and Print out the line. 是一个非常强大的文本搜索命令,与SED(stream editor,文本编辑工具)和AWK(文本分析、报告生成器)并称文本处理三剑客。 一.GREP命令基本使用格式 grep [OPTIONS] PATTERN [FILE&#…

    Linux干货 2016-06-22
  • 初识路由以及小实验

    路由(routing)就是通过互联的网络把信息从源地址传输到目的地址的活动。路由发生在OSI网络参考模型中的第三层即网路层。 初识路由以及小实验 根据实验的目的要求画出实验拓扑图 准备实验环境 根据实验拓扑图开始配置 配置计算机的IP: 配置路由器R1和R2的IP 配置路由 实验目的 实验准备 实验步骤 验证实验结果 实验目的 为了更好的了解路由,通过一个小…

    Linux干货 2016-11-24
  • 软链接与硬链接的分析

    Linux引用硬链接与软链接,是为了实现文件的共享,更有隐藏文件路径、增加权限安全及节省存储等的好处。很多新手不知道软链接与硬链接的区别,今天大家一起总结它们的区别吧^_^ 一,硬链接 硬链接的特性可以体现出什么是硬链接: 通过索引节点来进行链接,文件要有相同的inode及data block 不允许跨分区创建 只有在同一文件系统中的文件之间才可以,不能交叉…

    2017-07-22
  • Linux发展史

    Linux发展史 Linux是一套自由加开放源代码的类Unix操作系统,诞生于1991年10月5日(第一次正式向外公布),由芬兰学生Linus Torvalds和后来陆续加入的众多爱好者共同开发完成。 Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。 li…

    Linux干货 2017-05-20