systemd的新特性:

1.在系统引导的时候可以实现服务的并行启动;

2.能够实现按需激活进程;

在系统启动时,需要随系统启动服务,其服务进程并没有启动,但是systemd为每一个此类服务进程都注册了对应的套接字;我们称这种服务处理方式为“半激活状态”;

3.能够对当前系统的用户空间的每个进程状态快照;以后如果进程出现问题或故障,可以迅速恢复进程状态至过去的某一时刻;

4.systemd内部有一种基于依赖关系来定义的服务控制逻辑;

核心管理概念;unit文件

由systemd相关的配置文件进行标识、识别和配置功能的实现的基础;

unit的文件分类:

系统服务类

socket

目标类

快照类

...

这些配置文件主要保存在:

/usr/lib/systemd/system/*

/etc/systemd/system/*         符号链接(如果自己写入添加配置文件,可以直接放在该目录,不用创建符号链接)

/run/systemdsystem/*          非配置关键项;

unit文件的常见类型:

service unit:文件的扩展名为.service,用于定义系统服务,一般可以.service扩展名可以省略;

target unit:文件的扩展名为.target,用于模拟实现“init程序的运行级别”;

device unit:文件的扩展名为.device,用于定义内核识别出来的各设备;

mount unit:文件的扩展名为.mount,用于定义可以被systemd管理的文件系统的挂载点;

automount unit:文件的扩展名为.automount,用于定义文件系统的自动挂载点的位置;

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

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

path unit:文件的扩展名为.path,用于监控指定目录中的一个文件或一个子目录;如果被监控的文件或目录不存在;则systemd可以自动创建之;

systemd特性的实现方式:

1.基于socket unit的方式实现进程激活机制;

2.基于device unit的方式实现设备的自动识别,挂载;

3.基于bus的激活机制;

4.基于path的激活机制;

systemd的兼容和不兼容;

兼容:sys V init的脚本;

不兼容:必须使用systemctl命令来管理系统,systemctl命令的格式是固定不变的;所有不经由systemd启动的系统服务或系统功能,systemctl命令无法与之直接通信,也就意味着此类服务或功能,无法通过systemctl来控制;

systemctl命令:

systemctl - Control the systemd system and service manager

systemctl [OPTIONS...] COMMAND [NAME...]

管理服务类操作:

启动:service name start ==> systemctl start name[.service]

停止:service name stop ==> systemctl stop name[.service]

重启:service name restart ==> systemctl restart name[.service]

状态:service name status ==> systemctl status name[.service]

设置服务的开机自启:chkconfig --level runlevels name on ==> systemctl enable name.service

禁止服务的开启自启:chkconfig --level runlevels name off ==> systemctl disable name.service

查看某服务是否开机自启:chkconfig --list name ==> systemctl is-enabled name.service

条件是重启:service name condrestart ==> systemctl try-restart name.service

重载配置文件:service name reload ==> systemctl reload name.service

重载或重启:systemctl reload-or-restart name.service

重载或条件式重启:systemctl reload-or-try-restart name.service

查看某服务当前是否处于激活状态:systemctl is-active name.service

查看所有已处于激活状态的服务:systemctl list-units

--type=unit_type:查看指定unit类型的处于活跃状态的服务;

--all:显示所有,包括处于活跃状态和处于非活跃状态的各服务;

查看依赖指定服务的其他服务:systemctl list-dependencies name.service

禁止某服务被设定为开机自启:systemctl mask name.service

取消禁止某服务被设定为开机自启:systemctl unmask name.service

管理target unit:

模拟运行就别:

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,shutdown.target

运行级别间切换:init # ==> systemctl isolate name.target

注意:不是所有的target都能使用上述命令进行级别切换的;只有那些在对应的unit文件中包含了 allowisolate=yes的语法的target才能用于切换;

修改了unit文件之后,需要通过命令才能使之生效;

# systemctl daemon-reload

查看运行级别:runlevel ==> systemctl list-units --type=target --all

查看默认运行级别:/etc/inittab(id:3:initdefault:) ==> systemctl get-default

修改默认运行级别:/etc/inittab(id:3:initdefault:) ==> systemctl set-default name.target

rescue.target:紧急救援模式

systemctl isolate rescue.target

systemctl rescue

emergency.target:紧急调试模式

systemctl emergency

rescue模式,相当于安全模式,在切换到此模式时,操作系统会运行最底层的驱动程序,以保证服务器可以运行起来;

emergency模式,一般来说,通常是硬件故障,或者硬件不可识别,或硬件可识别但不可用等关乎于计算机硬件设施的问题,通常系统会启动emergency模式;

除上述模式之外,传统的init命令,shutdown命令,poweroff命令,halt命令,reboot命令其实都是systemctl的符号链接;

可以使用systemctl命令来直接实现上述功能;

关机:systemctl halt ,systemctl poweroff

重启:systemctl reboot

挂起:systemctl suspend

休眠(进程快照):systemctl hibernate

挂起并休眠:systemctl hybrid-sleep

service unit file的基本文件格式:

/etc/systemd/system:存放到都是各个unit file的符号链接;

/usr/lib/systemd/system

如果自行编写unit file,可以直接将文件放置于/etc/systemd/system目录中,但是需要为其提供一个符号链接文件放置于/etc/systemd/system目录中;

service unit file文件的基本格式;

此类unit file通常分为三段;

[unit]:定义与unit类型无关的通用选项;用于提供当前unit的描述信息,unit的依赖关系,unit相关帮助文档信息等;

常用的选项语句:

Description:定义相关服务的描述信息;意义性的介绍性的描述;

After:定义了此服务在启动前必须依赖的其他服务内容;

Before:定义了依赖此服务启动的其他服务;

Wants:指明依赖关系,说明该服务依赖于哪些其他的unit;弱依赖,即使被依赖的服务并没有被正确激活,也不会影响但前服务是否可以被激活;

Requires:指明依赖关系,说明该服务依赖于哪些其他的unit;强依赖,只要被依赖的unit无法被正确激活,则当前服务一定无法激活;

Conflict:定义了各unit之间可能存在冲突;

Documentation:定义了跟当前unit相关的管理命令的文档所在;

[service]:定义与系统服务相关的专用的选项语句;

常用的选项语句:

Type:用于定义影响execstart即相关参数的功能的unit进程

simple:默认值,表示由execstart语句指明的应用程序启动的进程就是主进程;

forKing:复制自身,表示有exepstart语句指明的应用程序所启动的进程中众多的子进程中一个将称为主进程,而一旦启动完成,父进程会退出;

oneshot:一次性进程,功能类似于simple,在启动后续的unit之前,主进程会退出;

notify:功能类似于simple,但是其后续的unit仅在通过sd_notify()函数发送通知之后,才能运行execstart所指明的应用进程;

Environmentfile:环境配置文件,此文件一般用于在execstart之前被读取,并为execstart执行后面的应用程序提供必要的变量以及其他自定义功能等;

execstart:指明启动此服务所需要运行的命令或脚本;

execreload:指明重载配置文件所需要运行的命令或脚本;

execstop:指明停止服务所需要运行或脚本;

execstartpre:指明在执行execstart指明的命令之前需要运行的命令或脚本;

execstartpst:指明在执行execstart指明的命令之后需要运行的命令或脚本;

restart:表示如果服务遭遇有意外而终止,则会自动重启该服务;

[install]:定义由“systemctl enable”和“systemctl disable”命令在实现服务启动或禁用时用到的专用选项语句:

wantedby:弱依赖关系,指的是该服务被哪些其他units所依赖;

requiredby:强依赖关系,指的是该服务被哪些其他unit所依赖;

centos 7系统引导过程:

1.post

2.选择启动设备,读取引导程序

3.装载引导程序(centos 7使用的grub2)

4.装载引导程序的配置文件:/etc/grub.d/,/etc/default/grub,/boot/grub2/grub.cfg

5.加载initramfs驱动模块

6.加载内核

7.内核以只读方式挂载(临时的根目录)rootfs,启动systemd进程;

8.执行initrd-*.target所有的unit,包括挂载/etc/fstab文件中所有有效的文件系统;

9.根切换

10.systemd执行默认的target;

本文转自谁等了谁 51CTO博客,原文链接:http://blog.51cto.com/12486569/1952155

#25 centos7(RHEL)系列操作系统的启动流程、systemd的特性、与命令systemctl的使用...相关推荐

  1. linux开机dracut界面_#23 centos5(RHEL)系列操作系统的启动流程、与命令mkinitrd、dracut的使用...

    centos(RHEL)系列操作系统的启动流程:Intel x86兼容架构: Linux的系统组成:内核 + 应用程序  GUN/Linux:单纯的指Linux内核: 从硬盘存储和启动操作系统的角度: ...

  2. centOS7服务管理与启动流程

    centOS7启动流程 systemd简介 unit对象 unit类型 特性 service unit文件格式 service unit file文件通常由三部分组成 unit段的常用选项 Servi ...

  3. 驰骋工作流引擎设计系列05 启动流程设计

    2019独角兽企业重金招聘Python工程师标准>>> 启动流程设计 第1节. 关键字 驰骋工作流引擎 流程快速开发平台 workflow ccflow jflow 第1节. 启动流 ...

  4. 三、硬盘分类与操作系统的启动流程

    一.硬盘 1.机械磁盘HDD 磁道:当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道. 扇区:磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘 ...

  5. 鸿蒙操作系统系列——LiteOS启动流程分析

    目录 1.分析startup文件目录 2. 分析reset_vector_up.s 2.1 定义中断向量表 2.2 重定位系统镜像 2.3 初始化内核页表 2.4 初始化内核临时页表 2.5 设置mm ...

  6. rhel系统启动过程_Linux 的启动流程

    半年前,我写了<计算机是如何启动的?>,探讨BIOS和主引导记录的作用. 那篇文章不涉及操作系统,只与主板的板载程序有关.今天,我想接着往下写,探讨操作系统接管硬件以后发生的事情,也就是操 ...

  7. Linux 的启动流程

    计算机是如何启动的?一文不涉及操作系统,只与主板的板载程序有关.今天,我想接着往下写,探讨操作系统接管硬件以后发生的事情,也就是操作系统的启动流程. 这个部分比较有意思.因为在BIOS阶段,计算机的行 ...

  8. Linux 的启动流程--转

    http://cloudbbs.org/forum.php?mod=viewthread&tid=17814 半年前,我写了<计算机是如何启动的?>,探讨BIOS和主引导记录的作用 ...

  9. Linux的启动流程简析(以Debian为例)

    Linux的启动流程简析(以Debian为例) 正文: 前面的文章探讨BIOS和主引导记录的作用.那篇文章不涉及操作系统,只与主板的板载程序有关.今天,我想接着往下写,探讨操作系统接管硬件以后发生的事 ...

最新文章

  1. ServiceStack OrmLite 数据库查询 几个实用方法 (继承表格式化集合等)
  2. java substring 性能_《Java程序性能优化》subString()方法的内存泄露
  3. oracle12c分页,ArcSDE10.2.1使用Oracle12c新特性分页
  4. 正则化与L0、L1、L2范数祥解
  5. android webview定位权限,混合开发安Android webview使用内置浏览器定位的权限
  6. 全地球的水也没办法将这个“特殊”的瓶子装满!
  7. element 动态加载下拉框_记一次很坑的需求:给element-cascader添加一个重置和确定按钮...
  8. UIToolBar使用示例
  9. java里面的内存机制_Stack vs. Heap:了解 Java 的内存分配机制
  10. 用计算机遥感技术图片,遥感图像处理
  11. think-cell 加载项在 Office 出现故障后消失,怎么解决?
  12. 新颖的自我介绍_有创意的自我介绍10篇
  13. 好心情平台:30分钟就可改善抑郁情绪的运动处方
  14. 设计模式 — 工厂模式
  15. pe文件签名信息检测技术
  16. 今天拿到软件设计师证书
  17. 4k纸是几厘米乘几厘米_4k纸有多大(4k纸长什么样图片)
  18. UML设计java程序_利用UML序列图设计Java应用程序详解
  19. KubeSphere 社区双周报 | KubeKey v3.0.0 发布 | 2022-11-10
  20. 你想象不到的工业智能协议网关还可以这样用

热门文章

  1. 手把手教你学dsp_新课免费看| 手把手教你学DSP,C2000从入门到精通
  2. singleflight包原理解析
  3. CentOS7 防火墙关闭
  4. 分布式服务框架gRPC
  5. kafka是如何解决粘包拆包的
  6. hadoop 自定义分区
  7. java解决限制访问指定url
  8. vuejs npm chromedriver 报错
  9. Linux服务器安全防护十个方面
  10. jsp连接mysql----------第一篇技术类文章