上一章节大致说了下Linux的一些发行版,每个发行版都有自己的包管理器,使用的一些执行命令也不相同,如果想要深入学习Linux,首先第一条就是确定你所使用的Linux发行版以及该发行版的哪个版本,例如,我所使用的Linux发行版是CentOS
,版本为CentOS 7
,那么我就需要去找CentOS 7
所使用的命令(yum),对应的特性以及相关依赖等等,不要盲目的去搜索,使用CentOS 7
发行版,却搜索dnf的命令。下边我主要以 CentOS 7
版本来介绍,其它版本请自行参考。
首先解释针对于Linux下几个名词以及其含义
BIOS
全拼 Basic I/O System
基本输入输出系统,常常说的主板BIOS系统就是这玩意了。
POST
全拼 Power On Self Test
上电自检,用于检验电脑硬件基本功能是否正常,是BOIS
的组成部分(不要和HTTP的POST混为一谈)。
MBR
全拼 Master Boot Record
主引导记录
GRUB2
全拼 GRand Unified Bootloader,Version 2
系统引导装载程序,GRUB2
是升级版,增加了一些东东,CentOS 7
使用的就是GRUB2
systemd
全拼 System Daemon
系统守护进程,PID 恒为1 的初始化进程,是内核第一个加载的程序(CentOS 7),请注意,它被写为systemd
,不是system D
或system D
,甚至是SystemD
,因为它是一个系统守护进程,在Unix/Linux下,这些是小写的,并以小写的d作为后缀,因为用systemd
管理系统,所以它被称为systemd
。
firewalld
提供防火墙功能
CentOS 7启动流程
BIOS
(开机自检) 》MBR
(主引导) 》GRUB2
(选择内核) 》kernel
(加载内核) 》systemd
(初始化程序进行)
第一步
BIOS
开机自检 执行POST
,确认硬件的基本功能正常
第二步
POST
结束后,BIOS
查找接入的磁盘中引导记录,也就是 MBR
,加载到内存中,执行引导代码
第三步
GRUB2
定位和加载 Linux 内核到内存中,并转移控制权到内核
第四步
kernel
在选定的内核加载到内存中并开始执行后,在其进行任何工作之前,内核文件首先必须从压缩格式解压自身。一旦内核自解压完成,则加载 systemd 进程(其是老式 System V 系统的 init 程序的替代品),并转移控制权到 systemd
第五步
systemd
是所有进程的父进程。它负责将 Linux 主机带到一个用户可操作状态(可以执行功能任务)。可以管理运行中的 Linux 主机的许多方面,包括挂载文件系统,以及开启和管理 Linux 主机的系统服务等
systemd
从 CentOS 7
开始,使用 systemd
替代了 sysvinit
,systemd
对应的进程管理命令是systemctl
,这玩意必须了解。
先介绍下 Unit
,这个东西译为单元
,Unit
文件统一了过去各种不同的系统资源配置格式,例如服务的启/停、定时任务、设备自动挂载、网络配置、设备配置、虚拟内存配置等,而 systemd 通过不同的文件后缀名来区分这些配置文件,下面是 systemd 所支持的12种 Unit 文件类型:
Unit Tpye | Description |
---|---|
Service units | 启动和控制守护进程及其组成的进程 |
Socket units | 封装了系统中的本地IPC或网络套接字,对于基于套接字的激活非常有用 |
Target units | 对于分组单元或在引导期间提供众所周知的同步点很有用 |
Device units | 暴露systemd中的内核设备,并可用于实现基于设备的激活 |
Mount units | 控制文件系统中的挂载点 |
Automount units | 提供自动挂载功能,用于按需挂载文件系统以及并行启动 |
Snapshot units | 可以用来临时保存systemd单元集的状态,以后可以通过激活保存的快照单元来恢复 |
Timer units | 对于触发基于计时器的其他单元的激活是有用的 |
Swap units | 封装了操作系统的内存交换分区或文件 |
Path units | 当文件系统对象发生变化或修改时,Path units 可能用于激活其他服务 |
Slice units | 用于在分层树中对管理系统进程(如服务和范围单元)的单元进行分组,以达到资源管理的目的 |
Scope units | 类似于Service units ,但是管理外部流程而不是启动它们 |
如果想看更为详细的介绍,我们可以在根目录输入命令:man systemd
它会打印systemd
的帮助手册。
小结
systemd是系统和服务管理器,它提供了12种不同类型被称为units
(单元)的不同实体之间的依赖系统。而units
封装了与系统启动和维护相关的各种对象。大多数units
都是在配置文件中配置的,也有一些特殊的units
是在其它配置或者由系统动态创建或者在运行时以编程方式创建的。
个人理解就是把以前杂乱无章的配置文件按分类、功能等进行区分,方便开发和维护,就像是现在说的垃圾分类一样。
例如:Service units
这个类型,就是服务进程,类似windows中的服务,可以做开机启动等功能。
再比如:Target units
这个类型其作用相当于units
分组,就像搭积木一样,把各个不同的积木拼成一个模型,我们可以将一个复杂的逻辑按功能不同,配置成不同类型的units
,然后通过一个或多个target units
将它们组合到一起,这中间,会有一些相关的依赖关系,就像我们开发一套订单系统,它支持生成订单与支付,我们第一步必须是先创建订单,然后才会支付。