systemd介绍

  1. 由来
    • Linux 的启动一直采用init进程,这种方法有两个缺点。一是启动时间长。init进程是串行启动,只有前一个进程启动完,才会启动下一个进程,二是启动脚本复杂。init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长,Systemd 这个名字的含义,就是它要守护整个系统。Systemd 可以管理所有系统资源。不同的资源统称为 Unit(单元,服务)

      • 支持并行化任务
      • 同时采用socket式与D-Bus总线式激活服务;
      • 按需启动守护进程(daemon);
      • 利用 Linux 的 cgroups 监视进程;
      • 支持快照和系统恢复;
      • 维护挂载点和自动挂载点;
      • 各服务间基于依赖关系进行精密控制
    • 所有可用的单元文件存放在 /usr/lib/systemd/system/ 和 /etc/systemd/system/ 目录(后者优先级更高

  2. systemd用法

    • systemctl是 Systemd 的主命令,用于管理系统,查看 Systemd 的版本

    • 用于查看启动耗时   

    • 查看每个服务的启动耗时 

    • 显示瀑布状的启动过程流

    • 显示指定服务的启动流

  3. Unit 的配置文件

    • 每一个 Unit 都有一个配置文件,告诉 Systemd 怎么启动这个 Unit 。Systemd 默认从目录/etc/systemd/system/读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/,真正的配置文件存放在那个目录。systemctl enable命令用于在上面两个目录之间,建立符号链接关系,systemctl disable命令用于在两个目录之间,撤销符号链接关系,相当于撤销开机启动。真正的文件时箭头后面

    • 配置文件的区块unit

      [Unit]区块通常是配置文件的第一个区块,用来定义 Unit 的元数据,以及配置与其他 Unit 的关系

      [Install]通常是配置文件的最后一个区块,用来定义如何启动,以及是否开机启动

      [Service]区块用来 Service 的配置,只有 Service 类型的 Unit 才有这个区块

  4. target

    • Target 就是一个 Unit 组,包含许多相关的 Unit 。启动某个 Target 的时候,Systemd 就会启动里面所有的 Unit

      (1)默认的 RunLevel(在/etc/inittab文件设置)现在被默认的 Target 取代,位置是/etc/systemd/system/default.target,通常符号链接到graphical.target(图形界面)或者multi-user.target(多用户命令行)。

      (2)启动脚本的位置,以前是/etc/init.d目录,符号链接到不同的 RunLevel 目录 (比如/etc/rc3.d、/etc/rc5.d等),现在则存放在/lib/systemd/system和/etc/systemd/system目录。

      (3)配置文件的位置,以前init进程的配置文件是/etc/inittab,各种服务的配置文件存放在/etc/sysconfig目录。现在的配置文件主要存放在/lib/systemd目录,在/etc/systemd目录里面的修改可以覆盖原始设置。

  5. 日志管理

    • Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。日志的配置文件是/etc/systemd/journald.conf

  6. 如何制作系统启动服务 

  7. 文件详解

     [Unit]
      Description:描述信息
            After:表明需要依赖的服务,作用决定启动顺序
            Before:表明被依赖的服务
            Requles:依赖到的其他unit ,强依赖,即依赖的unit启动失败。该unit不启动。
            Wants:依赖到的其他unit,弱依赖,即依赖的unit 启动失败。该unit继续启动
            Conflicts:定义冲突关系
     [Service]:
    Type:启动时关系的定义,
            simple:exec启动的进程就是主进程。
            forking :exec 启动的进程生成的其中一个子进程成为主进程,启动完成后,旧的主进程会退出。
            ontshot:启动下一个进程前主进程退出。
    PIDFile=/var/run/sshd.pid
          EnvironmentFile 需要使用到的变量的定义文件
          ExecStart= 启动 unit需要执行的命令
          ExecStartpre:
          ExecStartpost:
          ExecStop=停止unit需要执行的命令
          Restart:
       ExecReload=/bin/kill -HUP $MAINPID
          KillMode=process
          Restart=on-failure
          RestartSec=42s
    [install]:服务启动或禁用时的一些选项
    Alias:
          RequlredBy: 被那些unit所依赖,
          WantedBy:被那些unit所依赖

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值