Linux 及其它类 Unix 系统的系统服务管理和控制程序(初始化系统/init system)简单梳理
文章目录
- 一、Linux 的启动过程
- 二、初始化程序
- (一)System V init
- (二)Upstart init
- (三)systemd
- (四)Launchd
- (五)Epoch
- (六)Mudar
一、Linux 的启动过程
在我们打开 Linux 电脑的电源后第一个启动的进程就是 init。分配给 init 进程的 PID 是1。它是系统其他所有进程的父守护进程。 init 进程在 Start_kernel 执行完毕之后,也就是 Kernel 初始化完毕之后启 动,它是系统所有进程的起点,内核在完成核内引导以后,即在本进程空间内加载 init 程序。
当一台Linux电脑启动后,处理器会先在系统存储中查找BIOS,之后BIOS会检测系统资源然后找到第一个引导设备,通常为硬盘,然后会查找硬盘的主引导记录(MBR),然后加载到内存中并把控制权交给它,以后的启动过程就由MBR控制。
主引导记录会初始化引导程序(Linux上有两个著名的引导程序,GRUB和LILO,80%的Linux系统在用GRUB引导程序),这个时候GRUB或LILO会加载内核模块。内核会马上查找/sbin下的“init”程序并执行它。从这里开始init成为了Linux系统的父进程。init读取的第一个文件是 /etc/inittab
,通过它init会确定我们Linux操作系统的运行级别。它会从文件 /etc/fstab
里查找分区表信息然后做相应的挂载。然后init 会启动 /etc/init.d 或者 /etc/rc.d/init.d 里指定的默认启动级别的所有服务/脚本。所有服务在这里通过init一个一个被初始化。在这个过程里,init每次只启动一个服务(串行启动),所有服务/守护进程都在后台执行并由init来管理。
关机过程差不多是相反的过程,首先init停止所有服务,最后阶段会卸载文件系统。
以上提到的启动过程有一些不足的地方。而用一种更好的方式来替代传统init的需求已经存在很长时间了。也产生了许多替代方案。其中比较著名的有Upstart,Epoch,Muda和Systemd。而Systemd获得最多关注并被认为是目前最佳的方案。
二、初始化程序
(一)System V init
System V init 是类 Unix 操作系统传统的也是首款初始化系统。
SysV init 守护进程是一个基于运行级别的系统,它使用运行级别(单用户、多用户以及其他更多级别)和链接(位于 /etc /rcN.d/ 目录中,分别链接到 /etc/init.d 中的 init 脚本)来启动和关闭系统服务。SysV启动是线性、顺序的。一个S20的服务必须要等待S19启动完成才能启动,如果一个启动要花很多时间,那么后面的服务就算完全无关,也必须要等。
在 SysV init 中,服务被分成两大类,一类是可独立运行的服务,另一类是受xinetd管理的服务,而xinetd本身是一个独立运行的服务,用来负责管理一些不常用的服务,当这些服务需要被使用时,由xinetd来唤醒它们,当服务使用完后,这些服务会被结束以减少系统资源的占用。
(二)Upstart init
Upstart init 是由 Ubuntu 的制造商开发的基于事件的初始化系统,用于替代 SysV init 初始化系统。它用于 Ubuntu 6.10 - 14.10 版本和基于 RHEL 6 的系统中,之后的被 systemd 取代了。
UpStart(Upstart init daemon)是基于事件的启动系统,它使用事件来启动和关闭系统服务。Upstart是并行的,只要事件发生,服务可以并发启动。这种方式无疑要优越得多,因为它可以充分利用现在计算机多核的特点,大大减少启动所需的时间。
Upstart是基于事件的,当系统中的什么情况发生变化时,它会运行某个特定的程序。这里被运行的程序多半是用来启动或终止服务的脚本。这个配置方式和System V在系统进入某个运行级别的时候运行init脚本的链接的概念实际上是非常类似的。只不过Upstart更加灵活一些,Upstart不仅能在运行级别改变的时候启动或终止服务,也能在接收到系统发生其他改变的信息的时候启动或终止服务。这些系统的改变被称为“事件”。例如,当Upstart从udev接收到运行时文件系统加载、打印机安装或其他类似的设备添加或删除的信息,并采取相应的行动。Upstart也可以在系统启动、关闭或某个任务状态改变的时候启动或关闭服务。
UpStart 系统初始化的过程是在工作和事件的相互协作下完成的,可以大致描述为:系统上电后运行 GRUB 载入内核。内核执行硬件初始化和内核自身初始化。在内核初始化的最后,内核将启动 pid 为 1 的 init 进程(即 UpStart 进程),init 进程运行后,init 进程自身会产生不同的事件,这些最初的事件会触发一些工作运行,而每个工作运行过程中又会释放不同的事件,这些事件又将触发新的工作运行。如此反复,直到整个系统正常运行起来。
UpStart 是一个由事件触发工作运行(事件驱动机制)的初始化系统,每一个程序的运行都由其依赖的事件发生而触发的。UpStart 核心模块就是 Job 和 Event。
(三)systemd
systemd 中文名叫“系统管理守护进程”,是旨在以并行方式启动进程的替换传统 init 系统的初始化系统,目前已经在许多标准发行版(Fedora,OpenSuSE,Arch,RHEL,CentOS 等)中应用。借鉴 Mac OS。
开发 systemd 的主要目的就是减少系统引导时间和计算开销。systemd 最开始以GNU GPL协议授权开发,现在已转为使用GNU LGPL协议,它是如今讨论最热烈的引导和服务管理程序。如果你的Linux系统配置为使用Systemd引导程序,它取替传统的SysV init,启动过程将交给systemd处理。systemd 的一个核心功能是它同时支持 SysV init的后开机启动脚本。
(四)Launchd
launchd 是 Mac OS 下用于初始化系统环境的 init 系统,它是内核装载成功之后在 OS 环境下启动的第一个进程。其实 systemd 的很多概念来源于此。
(五)Epoch
一种基于简单性的管理服务的 init 替换守护进程,旨在启动单线程进程。
(六)Mudar
一种用Python编写的 init 替换守护进程,在 Pardus GNU / Linux上实现,旨在异步启动进程
Linux 及其它类 Unix 系统的系统服务管理和控制程序(初始化系统/init system)简单梳理相关推荐
- Linux 系统服务管理器(初始化系统/init system) -- systemd 及命令 systemctl 的详细介绍
文章目录 一.系统服务管理器 systemd (一)systemd 的特性 (二)systemd 与 传统 init 系统的区别 (三)systemd 的目录和文件 (四)systemd 的 Unit ...
- 浅析 Linux 初始化系统(系统服务管理和控制程序/Init System) -- sysvinit/systemvinit(System V init)
文章目录 从 sysvinit 到 systemd 什么是 init 系统,init 系统的历史和现状 sysvinit 概况 运行级别 sysvinit 运行顺序 sysvinit 和系统关闭 sy ...
- 浅析 Linux 初始化系统(系统服务管理和控制程序/Init System) -- systemd
文章目录 一.Systemd 的简介和特点 (一)同 SysVinit 和 LSB init scripts 兼容 (二)更快的启动速度 (三)systemd 提供按需启动能力 (四)Systemd ...
- 浅析 Linux 初始化系统(系统服务管理和控制程序/init system) -- UpStart
文章目录 一.Upstart 简介 (一)开发 Upstart 的缘由 (二)Upstart 的特点 二.Upstart 概念和术语 (一)Job (二)Job 生命周期 (三)事件 Event 1. ...
- Linux 初始化系统(系统服务管理和控制程序/Init System) -- System V init(SysV init) 的简单理解
文章目录 SysV init 简介 SysV init 的缺点 运行级别 主要文件和目录的截图 SysV init 简介 System V init(缩写 SysV init)是类 Unix 操作系统 ...
- CentOS 7 Linux 的初始化系统(系统服务管理和控制程序/Init System) -- systemd 详解
文章目录 一.systemd 的由来 (一)常用的 init 系统 (二)init 程序的缺点 (三)systemd 简介 (四)systemd 架构图 二.服务管理 三.unit 配置文件 (一)概 ...
- 计算机毕业设计Java信用卡增值业务系统小程序管理端(源码+系统+mysql数据库+lw文档
计算机毕业设计Java信用卡增值业务系统小程序管理端(源码+系统+mysql数据库+lw文档 计算机毕业设计Java信用卡增值业务系统小程序管理端(源码+系统+mysql数据库+lw文档) 本源码技术 ...
- JSP电影院在线订票系统JSP电影购票系统JSP电影票预订系统JSP电影院管理jsp电影购票系统
JSP电影院在线订票系统JSP电影购票系统JSP电影票预订系统JSP电影院管理jsp电影购票系统 开发语言:Java 开发工具:Myeclispe /Eclipse 数据库:MYSQL 应用服务:To ...
- javaweb JAVA JSP停车场管理系统源码JSP停车收费系统JSP停车场管理 JSP停车场收费系统
javaweb JAVA JSP停车场管理系统源码JSP停车收费系统JSP停车场管理 JSP停车场收费系统 protected void doGet(HttpServletRequest req, H ...
最新文章
- luogu P1064 金明的预算方案
- bzoj2959 长跑
- 灾备知识总结:容灾与备份区别、灾备技术、容灾体系规划
- 玩转webpack(一)下篇:webpack的基本架构和构建流程
- cocos 事件分发2
- c语言函数调用数组_第七讲:C语言基础之函数,第二节,实现汉诺塔
- Java数据库篇9——备份与还原、忘记密码
- 028-Dell服务器做Raid
- 【ISL-1】统计学习概览
- 即刻VR 唯快不破——2021服贸会的黑科技应用侧记
- 拉普拉斯金字塔融合原理浅析
- 计算机键盘的删除键,电脑删除键在哪 删除的快捷键是什么
- Koo叔说Shader-描边效果
- 谷歌身份验证器的使用超详细步骤
- 信息数据采集软件-什么工具可以快速收集信息
- Python编程PTA题解——查询水果价格
- vr游戏模型测试软件,Steam VR性能测试工具介绍
- 微信体现计算机网络功能,教你微信提现如何免手续费
- Listio官网教程
- 厚积薄发打卡Day75 :【MSUP】Java语言特性与设计模式(上)
热门文章
- jdk12源代码文件_在JDK 11中启动单文件源代码程序
- react java_独眼巨人React组织了Java 8库的寒武纪爆发
- 设计模式的Java 8 Lambda表达式-策略设计模式
- jsf 单元测试_构建和测试JSF.next
- java 解析日期格式_日期/时间格式/解析,Java 8样式
- java8 默认方法_如何不使用Java 8默认方法
- 将HTML转换为Apache POI的RichTextString
- ldap java_使用LDAP保护Java EE6中的Web应用程序
- 实际的Reactor操作–检索Cloud Foundry应用程序的详细信息
- 新ANTLR 4.6的重要更改