1、centos系列的系统启动流程(内核级别的启动流程):

POST(加电自检)---> Boot Sequence(BIOS)---> Boot loader (MBR)---> Kernel(ramdisk) ---> rootfs(加载真正的根文件系统)---> /sbin/init

  init:

    centos5:SysV init

    centos6:updstart  借鉴ubuntu

    centos7:systemd  借鉴MAC

2、systemd的新特性:

  1、系统引导时实现服务并行启动:服务间无依赖关系会并行启动

  2、按需激活进程:若服务非立刻使用,不会立刻激活,处于半活动状态,占用端口,用时启动服务

  3、系统状态快照:回滚到过去某一状态。

  4、基于依赖关系定义服务控制逻辑。

3、核心概念:unit

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

  /usr/lib/systemd/system/    ---------------> 主要是多种unit构成

  /etc/systemd/systemd/   ------------------>主要是一些配置、管理unit的文件

  /run/systemd/system/

常见的unit有哪些呢?(这里是参考了/usr/lib/systemd/system/目录下的units)

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

  Target unit:文件扩展名为.target,用于模拟实现“运行级别”。同时多个unit的组合

  Device unit:文件扩展名为.device,用于定义内核识别的设备。systemd与udev共同实现。

  Mount unit:文件扩展名为.mount,用于实现文件系统挂载点。

  Socket unit:文件扩展名为.socket,用于标识进程间通信用到的socket文件。

  Snapshot unit:文件扩展名为.snapshot,管理系统快照。

  Swap unit:文件扩展名为.swap,用于标识swap设备。

  Automount unit:文件扩展名为.automount,文件系统自动挂载设备。

  Path unit:文件扩展名为.path,用于定义文件系统中的一个文件或目录。

  scope unit:不是由systemd启动的外部进程

  slice unit:进程组

4、关键特性:

  1、基于socket的激活机制:socket与程序分离,将套接字先分配但是程序本身未启动。

  2、基于bus的激活机制;基于总线的请求来激活设备。

  3、基于device的激活机制;设备插入时自动挂载激活设备,挂载点不存在自动创建。

  4、基于path的激活机制;监控目录文件是否存在来激活服务或者进程。

  5、系统快照:保存各unit的当前状态信息于持久存储设备中。

  6、向后兼容sysv init脚本 /etc/init.d

  注意:存在一些与systemd不兼容的情况:

    1)systemctl的命令是固定不变的。

    2)非由systemd启动的服务,systemctl无法与之通信。此时自己可以编写unit来实现被systemd管理。

5、管理系统服务:主要命令systemctl

Centos7:service类型的unit文件;
systemctl命令:
-Control the systemd system and service manager
      启动:service NAME start ===> systemctl start NAME.service
      停止:service NAME stpo ===> systemctl stop NAME.service
      重启:service NAME restart ===> systemctl restart NAME.service
      状态:service NAME status ===> systemctl status NAME.service
      条件式重启:service NAME condrestart ===> systemctl try-restart NAME.service
      重载或重启服务:systemctl reload-or-restart NAME.service (会判断此服务是否可以像nginx -s一样重载功能,如果不能,就重启)
      重载或条件式重启服务:systemctl reload-or-try-restart NAME.service
  
      查看某服务当前激活与否的状态(shell脚本中常用):systemctl is-active NAME.service
  •         注意:这个结果有三种状态:active、unknown、failed三种,只有active才表示服务启动成功并正常运行,剩下的两个都表示服务未正常运行。unknown表示服务是正常关闭后的状态,failed则表示服务异常终止出现的状态。
      查看所有已激活的服务:systemctl list-units --type service      (就是说查看服务在当前时刻下为”active“的所有服务)
      查看所有服务(已激活和未激活):systemctl list-units -t service --all (查看服务在当前时刻下为”active“以及”inactive“的所有服务)
      
      设置服务开机自启:chkconfig NAME ON ===> systemctl enable NAME.service
      禁止服务开机自启:chkconfig NAME off ===> systemctl disable NAME.service
      查看某服务是否开机自启:chkconfig --list NAME ===> systemctl is-enabled NAME.service
      
      禁止某服务设定位开机自启:systemctl mask NAME.service
      取消此禁止:systemctl unmask NAME.service       查看此服务的依赖关系:systemctl list-dependencies NAME.service

管理target units:

运行级别:

     ==> 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
注意:在上面的这些中,每个runlevel[1-6].target都是做了一个软链接指向这些poweroff.target、multi-user.target等target。 切换运行级别:init N ---> systemctl isolate NAME.target 查看当前运行环境下的运行级别: runlevel ===> systemctl list-units --type target
查看系统中所有的运行级别:systemctl list-untis -t target --all 获取系统默认的运行级别:systemctl get-default
修改系统默认的运行级别:systemctl set-default NAME.target 切换至紧急救援模式:systemctl rescue
切换至emergency模式:systemctl emergency
  两者区别:紧急救援模式下Linux还是会使用脚本/etc/rc.d/rc.sysinit进行系统初始化,然后加载驱动程序等。但是在emergency模式下不会执行初始化脚本对系统进行初始化。所以emergency多用于驱动安装失败需要救援的情况下。

我们可以看一下:

centos7系统的启动流程:

阶段1
systemd执行的第一个目标是/usr/lib/systemd/system/default.target,这个文件链接到当前目录的graphical.target
阶段2
在这个阶段,会启动multi-user.target,这个target为多用户支持设定系统环境。会启动如下两个目录中单元。
/etc/systemd/system/multi-user.target.wants/
/usr/lib/systemd/system/multi-user.target.wants/
阶段3
basic.target用于启动最基本的底层服务,他会引入设备挂载,套接字,计时器、路径映射等一些守护进程必备的基本初始化条件。它通过如下两个目录决定那些单元会被启动。
/etc/systemd/system/basic.target.wants/
/usr/lib/systemd/system/basic.target.wants/
阶段4
sysinit.target会启动重要的系统服务例如系统挂载,内存交换空间和设备,内核补充选项等等。它通过如下两个目录决定那些单元会被启动。
/etc/systemd/system/sysinit.target.wants/
/usr/lib/systemd/system/sysinit.target.wants/
阶段5
local-fs.target 也不能算是阶段5,可能和阶段4一些服务并行启动,这个阶段不会启动用户相关服务,它只处理底层核心服务,这个target会根据/etc/fstab来执行相关磁盘挂载操作。它通过如下一个目录决定那些单元会被启动。
/usr/lib/systemd/system/local-fs.target.wants/
 

6、service unit file:

文件通常由三部分组成:
  [Unit]:定义与unit类型无关的通用选项;用于提供unit的描述信息,unit行为以及依赖关系等。
  [Service]:与特定类型相关的专用选项,此处为Service类型。
  [Install]:定义由“systemctl enable”以及“systemctl disable”命令在实现服务启用或禁用时用到的一些选项。
 
  [Unit]段的常用选项:
    Description:描述信息,意义性描述;
    After:定义unit的启动次序;表示当前unit应该晚于哪些unit启动;
    Requies:依赖到的其他units,强依赖,被依赖的unit无法激活时,当前unit无法激活。
    Wants:依赖到的其他units,弱依赖,被依赖的unit无法激活时,不影响当前unit的激活。
    Conflicts:定义units间的冲突关系。
   [Service]段的常用选项:
    Type:用于定义影响Execstart及相关参数的功能的unit进程启动类型。
       类型:
        simple:默认。由Execstart指明的进程所启动起来的进程为主进程。
        forking:由Execstart所启动的进程生成的一个子进程为主,父进程退出。
        oneshot:一次性的启动,后续的unit进程启动后,该进程退出。
        dbus:仅仅在得到dbus之后才启动。
        notify:发送通知以后才能运行。
        idle:类似于simple
     EnvironmentFile:环境配置文件,一般给Execstart等使用其值。
     ExecStart:指明启动unit要运行命令或脚本;
     ExecStop:指明停止unit要运行的命令或脚本;
     Restart:
   [Install]段的常用选项:
     Alias:当前unit的别名。
     RequiredBy:被哪些units所依赖。
     WantedBy:被哪些units所依赖。    注意:对于新创建的unit文件或修改了的unit文件,要通知systemd重载此配置文件。
     systemctl daemon-reload

Centos7系统特性之systemd的更多相关文章

  1. Centos7系统下编写systemd脚本设置redis开机自启动

    今天想设置redis开机自启动,我觉得这样子比较好,但是在网上找了很长时间发现大家都是基于chkconfig的写法来设置的,并不能由systemd进程来统一管理,所以这里我自己编写了一个,希望大家可以 ...

  2. centos7系统运行级别简介

    centos7系统运行级别简介我们知道,centos6及之前的版本中,系统运行级别通过/etc/inittab文件进行设置和控制,但在centos7中,对这个文件的设置将不会对系统运行级别产生影响,这 ...

  3. Centos7系统rc.local不起作用问题

    Centos7系统rc.local不起作用问题 来源 https://www.cnblogs.com/xjz00/p/7729405.html Centos7已经写了要chmod +x /etc/rc ...

  4. 基于CentOS7系统添加自定义脚本服务及参数说明【转】

    概述 centos6如果要添加自定义脚本服务只需要把脚本放到/etc/init.d然后授权后用chkconfig添加后就可以管理了,那么centos7又是怎么添加自定义脚本服务呢? CentOS7添加 ...

  5. 006-(成功环境记录)基于Centos7系统部署cobbler批量安装系统

    1.1 cobbler简介 Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装.重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等. Cobbler可以使 ...

  6. centos7系统之telnet命令rpm包安装

    centos7系统之telnet命令rpm包安装 1. 下载安装包 rpm包下载位置:http://vault.centos.org/6.3/os/x86_64/Packages/ [root@ywb ...

  7. 使用Xshell5连接虚拟机VMware中安装的CentOS7系统

    使用Xshell5连接VMware中安装的CentOS7系统 准备材料 Xshell 下载地址 VMware Workstation 12 Pro 下载地址 CentOS 7 64位系统 下载地址 安 ...

  8. GIT-Linux(CentOS7)系统部署git服务器

    GIT-Linux(CentOS7)系统部署git服务器 root账号登录 一. 安装并配置必要的依赖关系在CentOS系统上安装所需的依赖:ssh,防火墙,postfix(用于邮件通知) ,wget ...

  9. centos7系统下搭建docker本地镜像仓库

    ## 准备工作 用到的工具, Xshell5, Xftp5, docker.io/registry:latest镜像 关于docker的安装和设置加速, 请参考这篇博文centos7系统下 docke ...

随机推荐

  1. Spring Boot之JdbcTemplate多数据源配置与使用

    之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源.在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.propertie ...

  2. SQL 必知必会·笔记<5>创建计算字段

    字段(field) 基本上与列(column)的意思相同,经常互换使用,不过数据库列一 般称为列,而术语字段通常与计算字段一起使用. 拼接(concatenate) 将值联结到一起(将一个值附加到另一 ...

  3. zabbix 监控基础

    一.监控系统基础概念 1.监控系统的工作内容 数据采集 --> 数据存储 --> 数据展示 --> 报警 传感器    时间序列数据    趋势图  采集到的数据超出阈(yu)值 2 ...

  4. Netty 超时机制及心跳程序实现

    Netty 超时机制的介绍 Netty 的超时类型 IdleState 主要分为: ALL_IDLE : 一段时间内没有数据接收或者发送 READER_IDLE : 一段时间内没有数据接收 WRITE ...

  5. top命令查看进程下线程信息以及jstack的使用

    转自:https://www.cnblogs.com/shengulong/p/8513652.html top -Hp pid可以查看某个进程的线程信息 -H 显示线程信息,-p指定pid jsta ...

  6. Jenkins CLI 命令详解

    笔者在前文<通过 CLI 管理 Jenkins Server>中介绍了如何通过 SSH 或客户端命令行的方式管理 Jenkins Server,限于篇幅,前文主要的目的是介绍连接 Jenk ...

  7. (转)Sphinx中文分词安装配置及API调用

    这几天项目中需要重新做一个关于商品的全文搜索功能,于是想到了用Sphinx,因为需要中文分词,所以选择了Sphinx for chinese,当然你也可以选择coreseek,建议这两个中选择一个,暂 ...

  8. JSP+Servlet+mysql简单示例【图文教程】

    下载MYSQL:http://dev.mysql.com/downloads/ 下载安装版的 然后安装(安装步骤就不详细说了) 安装好之后,点击托盘图标,打开管理工具 创建一个数据库   数据库的名字 ...

  9. .Net Core项目添加日志功能

    一.微软内置的日志组件 在.Net Core中使用模板新建的Web Api项目时,会自动加入日志功能.只需要在控制器中注入ILogger就可以了.命名空间为:Microsoft.Extensions. ...

  10. 理解运用JS的闭包、高阶函数、柯里化

    JS的闭包,是一个谈论得比较多的话题了,不过细细想来,有些人还是理不清闭包的概念定义以及相关的特性. 这里就整理一些,做个总结. 一.闭包 1. 闭包的概念 闭包与执行上下文.环境.作用域息息相关 执 ...