首页 > 其他分享 >systemd简介(一)

systemd简介(一)

时间:2024-03-29 14:32:21浏览次数:22  
标签:初始化 systemd 服务 简介 系统 Systemd Linux

文章目录

写在前面

本文主要介绍了linux的系统和服务管理器,与 SysV 和 LSB 初始化脚本兼容。主要内容有systemd的概念,适用的发行版,提供的能力,一些特点,发展史,起源,和旧的SystemV的比较,以及一些其他的相关问题。内容主要来自于systemd官网,网络文章,chatgpt3.5的回答。用于学习记录。

其他文章可参考:
systemd专栏

systemd是什么?

SystemdLinux 的系统和服务管理器,与 SysV 和 LSB 初始化脚本兼容。

Systemd 是一个在大多数现代 Linux 发行版中用于启动系统和管理系统进程的系统和服务管理器它取代了传统的 System V init 系统,提供了更先进、更功能丰富的系统初始化和服务管理功能。与 SysV 和 LSB 初始化脚本兼容。

也就是说systemd是一个系统管理器;服务管理器。
管理系统初始化等;管理服务。

Systemd 提供:

  • 强大的并行化能力
  • 使用套接字和 D-Bus 激活来启动服务
  • 提供守护进程的按需启动,使用 Linux cgroups 跟踪进程
  • 支持快照和恢复系统状态
  • 维护挂载点和自动挂载点
  • 实现基于事务依赖关系的复杂服务控制逻辑。

官方网站介绍:

systemd 是 Linux 系统的一套基本构建块。它提供了一个以 PID 1 运行并启动系统其余部分的系统和服务管理器。 systemd 提供积极的并行化功能,使用套接字和 D-Bus 激活来启动服务,提供守护进程的按需启动,使用 Linux 控制组跟踪进程,维护挂载点和自动挂载点,并实现基于事务依赖的精心设计的服务控制逻辑。systemd 支持 SysV 和 LSB 初始化脚本,并作为 sysvinit 的替代品。 其他部分包括日志守护进程、用于控制基本系统配置(如主机名、日期、区域设置)的实用程序、维护登录用户列表以及正在运行的容器和虚拟机、系统帐户、运行时目录和设置,以及用于管理简单网络的守护进程配置、网络时间同步、日志转发和名称解析。

目前使用systemd的Linux发行版有哪些?

使用 Systemd 作为默认初始化系统的知名 Linux 发行版:
1. Ubuntu:从 Ubuntu 15.04 开始,Canonical 公司的 Ubuntu 发行版开始使用 Systemd 作为默认的初始化系统。
2. DebianDebian 8(Jessie)及其后续版本也采用了 Systemd 作为默认的初始化系统。
3. Fedora :自 Fedora 15 开始,Red Hat 公司的 Fedora 发行版一直在使用 Systemd。
4. CentOSCentOS 7 CentOS 8 也使用 Systemd 作为默认的初始化系统。
5. openSUSEopenSUSE 以及它的衍生版如Leap 和 Tumbleweed 也使用 Systemd。
6. Arch LinuxArch Linux 也使用 Systemd 作为默认的初始化系统。
7. Red Hat Enterprise Linux (RHEL) :RHEL 7 和 RHEL 8 也采用了 Systemd 作为默认的初始化系统。
8. Kali LinuxKali Linux 也使用 Systemd 作为默认的初始化系统。
请注意,Linux 发行版的发展是不断变化的,因此在查找最新信息时,建议查看各个发行版的官方网站或社区以获取最准确的信息。

linux开机流程(系统初始化)是什么,systemd在其中的作用是什么

Linux 的开机流程通常可以概括为以下几个阶段,并介绍 Systemd 在其中的作用:

  1. BIOS/UEFI阶段:
    计算机开机时首先执行基本输入输出系统(BIOS)统一可扩展固件接口(UEFI) 中的启动程序,进行硬件自检和初始化。
  2. Boot Loader阶段:
    Boot Loader(如GRUB、LILO等) 被加载,负责加载内核和初始化 RAM 磁盘。
  3. 内核初始化阶段:
    Linux 内核被加载并初始化,包括初始化设备驱动程序、文件系统等。
  4. Systemd 初始化阶段:
    Systemd 作为初始化系统的一部分,负责启动和管理系统中的各种服务和进程。它的主要作用包括:
  • 单元管理 :Systemd 使用单元(Units)描述系统资源和服务,负责启动、停止和管理这些单元。
  • 服务管理 :Systemd 管理系统中的各种服务,包括网络服务、日志服务等。
  • 依赖关系 :Systemd 确保服务按照定义的依赖关系正确启动和停止。
  • 日志管理 :Systemd 负责收集和管理系统日志。
  • 定时任务 :Systemd 可以管理系统中的定时任务。
  • 系统状态监控 :Systemd 提供了监控系统状态和性能的功能。
  1. 用户空间初始化阶段:
    Systemd 启动后,会继续启动其他用户空间的进程和服务,如网络管理、图形界面等。

在 Linux 的开机流程中,Systemd 扮演着关键的角色,负责系统的初始化和服务管理,提供了更快速、可靠和灵活的系统启动和管理功能。通过 Systemd,管理员可以方便地管理系统中的各种服务、定时任务和系统资源,提高系统的可维护性和性能。
系统启动之后,Systemd也负责管理系统中的各种服务、定时任务和系统资源。

systemd架构图

在这里插入图片描述

图 1:systemd 的架构,作者:Shmuel Csaba Otto Traian (CC BY-SA 3.0)

systemd的一些特点

Systemd 的一些主要特点和功能:

  1. 单元管理:Systemd 引入了单元(Unit)的概念,将系统中的各种资源和服务抽象为单元,统一管理和控制。这包括服务单元、套接字单元、设备单元、挂载点单元等,使得管理和配置更为灵活和简单。
  2. 服务管理:Systemd 可以并行启动系统服务,提高系统的启动速度。它支持自动启动、停止、重启服务,以及监控服务状态、输出日志等功能,简化了服务管理的流程。
  3. 依赖关系:Systemd 允许定义服务之间的依赖关系,确保服务按照正确的顺序启动,并在需要时自动解决依赖关系,提高系统的稳定性和可靠性。
  4. 日志管理:Systemd 集成了日志记录功能,可以方便地查看和管理系统和服务的日志信息,帮助用户更好地诊断和解决问题。
  5. 定时任务:Systemd 支持定时任务的管理,用户可以轻松地设置和管理定时执行的任务,提高系统的自动化和效率。
  6. 系统状态监控:Systemd 提供了一系列命令和工具,可以监控系统的状态、资源使用情况和服务运行情况,帮助用户及时发现和解决问题。

systemd的发展史,起源,以及为什么有这个?

Systemd 是一个用于 Linux 系统的系统和服务管理器,最初由德国的开发者 Lennart Poettering 和 Kay Sievers 开发。以下是 Systemd 的发展史、起源和存在的原因:

起源:

Systemd 的起源可以追溯到 2010 年左右,当时 Linux 社区开始对传统的 SysVinit 初始化系统提出了一些批评,认为其在系统初始化和服务管理方面存在一些不足。Lennart Poettering 等人开始着手开发一个新的初始化系统,旨在改善 Linux 系统的启动速度、可靠性和管理性。

存在原因:

  • 改善系统初始化速度:传统的 SysVinit 启动过程较为复杂,需要按顺序启动每个服务,导致系统启动时间较长。Systemd 通过并行启动服务和采用更现代的方法,显著提高了系统的启动速度。
  • 统一管理服务:Systemd 引入了单元(Unit)的概念,将系统中的各种资源和服务抽象为单元,统一管理和控制,简化了服务的启动、停止和管理。
  • 改善系统可维护性:Systemd 提供了更多的功能和工具,如日志管理、依赖关系管理、定时任务等,使系统更易于维护和管理。
  • 提高系统稳定性和安全性:Systemd 的设计旨在提高系统的稳定性和安全性,通过更好的进程管理和资源控制,降低系统崩溃的风险。

发展历程:

  • Systemd 最初引起了一些争议,一些人认为它过于庞大、独占资源等问题。然而,随着时间的推移,越来越多的 Linux 发行版开始采用 Systemd 作为默认的初始化系统,包括 Ubuntu、Debian、Fedora、CentOS 等,逐渐成为 Linux 系统的标准初始化系统。
  • Systemd 的持续发展和改进,不断增加新功能和改进性能,使得它成为现代 Linux 系统中不可或缺的一部分。

总的来说,Systemd 的存在是为了改善 Linux 系统的初始化和服务管理,提高系统的性能、可靠性和可维护性,使得 Linux 在面对现代计算环境的挑战时能够更加强大和灵活。

systemd在现在有什么问题吗?

在软件开发和使用过程中,特别是像 Systemd 这样复杂且广泛使用的软件项目中,通常会出现一些问题和争议。以下是一些人们可能认为 Systemd 存在的一些问题:

  1. 过于庞大 :一些批评者认为 Systemd 过于庞大,引入了大量功能和依赖项,使得整个系统变得复杂这可能导致一些用户认为 Systemd 过度集成了太多功能,而不是遵循 UNIX 哲学中的“每个程序只做好一件事”的原则。
  2. 学习曲线陡峭 :Systemd 引入了许多新概念和工具,对于习惯于传统 SysVinit 的用户来说,可能需要一定时间来适应和学习新的工作流程和命令。
  3. 争议和分歧 :Systemd 在推出以来一直存在争议,一些用户和发行版开发者对其设计和决策持有不同意见。这种争议可能导致一些分裂和不满情绪。
  4. 系统兼容性 :由于 Systemd 成为许多主流 Linux 发行版的默认初始化系统,一些用户可能因为特定需求或偏好而遇到与 Systemd 不兼容的情况,这可能导致一些问题和困扰。
  5. 性能和资源消耗 :一些人担心 Systemd 的复杂性可能导致性能下降或资源消耗增加,尤其是在资源有限的系统上。

尽管存在一些批评和争议,但 Systemd 作为 Linux 系统的主要初始化系统和服务管理器,仍然被广泛使用并持续发展。Systemd 的设计旨在提高系统的性能、可维护性和安全性,因此许多用户和发行版开发者仍然看好它的未来,并致力于改进和优化 Systemd,以满足不断变化的需求和挑战。

systemd的补丁是跟随linux发行版的补丁一起发布的吗?

关于 Systemd 的补丁发布方式,一般来说,Systemd 的补丁通常会随着主要 Linux 发行版的更新一起发布。Systemd 作为许多主流 Linux 发行版的默认初始化系统和服务管理器,其更新通常会与 Linux 内核和发行版的其他组件同步发布。
如果想获取特定 Linux 发行版中 Systemd 的补丁信息,可以查看该发行版的官方网站或开发者社区,通常会提供有关 Systemd 更新和补丁的详细信息。此外,也可以通过 Systemd 项目的邮件列表、GitHub 存储库或社区论坛等渠道获取有关 Systemd 的最新补丁和更新信息。

systemd targets与旧的 SystemV 启动运行级别比较

首先,systemd 挂载 /etc/fstab 定义的文件系统,包括任何交换文件或分区。

此时,它可以访问位于 /etc 中的配置文件,包括它自己的配置文件。它使用其配置链接 /etc/systemd/system/default.target 来确定主机应引导到哪个状态或目标。default.target 文件是指向真正目标文件的符号链接。对于桌面工作站,这通常是 graphical.target ,它相当于 SystemV 中的运行级别 5。对于服务器,默认值更可能是 multi-user.target ,类似于 SystemV 中的运行级别 3emergency.target 类似于单用户模式 目标和服务是 systemd 单元。
在这里插入图片描述
在这里插入图片描述

每个目标都有一组依赖关系,这些依赖关系在其配置文件中进行了描述。systemd 启动所需的依赖项,这些依赖项是在特定功能级别 运行 Linux 主机所需的服务。当目标配置文件中列出的所有依赖项都加载并运行时,系统将在该目标级别运行。

sysinit.target 和 basic.target 可以被视为启动过程中的检查点 。尽管 systemd 的设计目标之一是并行启动系统服务但必须先启动某些服务和功能目标然后才能启动其他服务和目标。在满足该检查点所需的所有服务和目标之前,无法通过这些检查点。

当它所依赖的所有单元都完成时,就会达到 sysinit.target

所有这些单元,挂载文件系统,设置交换文件,启动udev,设置随机生成器种子,启动低级服务,以及设置加密服务(如果一个或多个文件系统被加密),都必须完成,但是,在sysinit.target中,这些任务可以并行执行。

sysinit.target 启动系统所需的所有低级服务和单元,这些服务和单元是启用迁移到 basic.target 所需的。

在满足sysinit.target 后,systemd 将启动满足下一个目标所需的所有单元。 basic.target 通过启动所有下一个目标所需的单位来提供一些附加功能。其中包括设置各种可执行目录的路径、通信套接字和计时器等内容。

最后,可以初始化用户级目标 multi-user.target graphical.target 。必须先访问 multi-user.target ,然后才能满足图形目标依赖关系.
如果 multi-user.target 是默认值,则应该会在控制台上看到文本模式登录。如果 graphical.target 是默认值,那么应该会看到一个图形登录;看到的特定 GUI 登录屏幕取决于的默认显示管理器。

总的来说,systemd 既强大又复杂。同样明显的是,systemd 不是一个单一的、巨大的、单体的、不可知的二进制文件。相反,它由许多较小的组件和子命令组成,这些组件和子命令旨在执行特定任务

SysVinit 命令的 systemd 命令等效项

如果省略服务名称,则所有最新版本都采用后缀 。例如systemctl start frobozz.servicesystemctl start frobozz 等效。

以fedro系统为例

sysvinit 命令systemd 命令描述
service frobozz startsystemctl start frobozz用于启动服务(不是持久重启)
service frobozz stopsystemctl stop frobozz用于停止服务(不是持久性重启)
service frobozz restartsystemctl restart frobozz用于停止然后启动服务
service frobozz reloadsystemctl reload frobozz如果支持,则在不中断挂起操作的情况下重新加载配置文件。
service frobozz condrestartsystemctl condrestart frobozz如果服务已在运行,请重新启动。
service frobozz statussystemctl status frobozz指示服务当前是否正在运行。
ls /etc/rc.d/init.d/systemctl或systemctl list-unit-files --type=service; ls /lib/systemd/system/.service; ls /etc/systemd/system/.service用于列出可以启动或停止的服务 用于列出所有服务和其他单元
chkconfig frobozz onsystemctl enable frobozz打开服务,以便在下次启动时启动或其他触发器。
chkconfig frobozz offsystemctl disable frobozz在下次重新启动或任何其他触发器时关闭服务。
chkconfig frobozzsystemctl is-enabled frobozz用于检查服务是否配置为在当前环境中启动。
chkconfig --listsystemctl list-unit-files --type=service或ls /etc/systemd/system/*.wants/打印一个服务表,其中列出了每个运行级别配置的打开或关闭
chkconfig --list |grep 5:onsystemctl list-dependencies graphical.target打印引导至图形模式时将启动的服务表
chkconfig frobozz --listls /etc/systemd/system/*.wants/frobozz.service用于列出此服务配置的启用或关闭级别
chkconfig frobozz --addsystemctl daemon-reload在创建新的服务文件或修改任何配置时使用

表中列出的所有命令和命令将继续在基于 systemd 的系统上工作,并在必要时转换为本机等效项。唯一的例外是 ./sbin/service/sbin/chkconfigchkconfig --list

相关信息

运行以获取更多详细信息。man systemctl

参考:

Systemd 项目的官方网站是 systemd.io
https://systemd.io/

https://www.freedesktop.org/software/systemd/man/latest/

源码路径:https://github.com/systemd/systemd/tree/main

博客:
https://zhuanlan.zhihu.com/p/643259265
https://opensource.com/article/20/4/systemd
https://docs.fedoraproject.org/en-US/quick-docs/systemd-understanding-and-administering

标签:初始化,systemd,服务,简介,系统,Systemd,Linux
From: https://blog.csdn.net/qq_40804558/article/details/137142926

相关文章

  • systemd-journal(一)之journalctl命令详解
    文章目录写在前面概述描述不传递参数传递一个或多个匹配参数示例源选项用法--system,--user-M,--machine=-m,--merge-DDIR,--directory=DIR--file=GLOB--root=ROOT--image=IMAGE--image-policy=policy--namespace=NAMESPACE过滤选项用法-S,--since=,-U,--until......
  • 领域驱动设计简介
    ​ 领域驱动设计(Domain-DrivenDesign,简称DDD)是一种软件开发方法论,旨在通过丰富的领域模型来解决复杂问题。它强调基于领域的逻辑来驱动设计,而非技术实现细节,以此来促进软件项目的成功。DDD的核心在于理解业务领域,并将这种理解反映在软件中。参考文档:领域驱动设计简介-CJavaPy......
  • 形式语言理论简介及应用
    文章目录一、形式语言理论是什么二、形式语言理论的相关概念三、形式语言的语法规则如何构成四、形式语言理论的应用一、形式语言理论是什么形式语言理论是计算机科学中的一个分支,研究形式语言的性质、结构和应用。形式语言是一种用于表示信息的抽象系统,它由一组符......
  • SCP简介以及106~110的介绍
    注:本文只供开玩笑 ,与 Anisolatedperson合作 目录SCP-106SCP-107SCP-108SCP-109SCP-110---------------------------------------------------------------------------------------------------------------------------------SCP-106SCP-106对象类:KeterS......
  • Apache Flink 简介
    ApacheFlink简介前言计算引擎大数据计算引擎分为离线计算和实时计算,离线计算就是我们通常说的批计算,代表是HadoopMapReduce、Hive等大数据技术。实时计算也被称作流计算,代表是Storm、SparkStreaming、Flink等大数据技术。计算引擎也在不断更新迭代,下图展示的是每一代计算......
  • 1、Spring CLI 简介
    SpringCLISpringCLI的目标是在你创建新项目或为现有项目添加功能时提高你的工作效率。以下是它的一些主要特点:bootnew命令bootnew命令允许你克隆一个外部项目,并可以选择对包名进行重构,以适应你选择的包名。此外,你还可以选择指定新项目的组ID、构件ID和版本。boot......
  • 微服务简介:从单体到云端,重塑软件开发的未来景观
    目前架构一般笼统可分为:单体架构或微服务架构单体架构特点?简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统分布式架构特点?松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝微服务:一种良好的分布式架构方案单一职责:微服务拆分粒度更小,每......
  • string简介
    C++string类简介C++string类存储一个字符串,并包含多种方法一、初始化C++string类有多种初始化方法:空初始化复制构造子串构造(下标+长度型)数组构造(接受字符数组)填充构造voidtest1(){//空构造strings1;//拷贝构造strings2(s1);strings3=......
  • HTML 简介
    ​ HTML(HyperTextMarkupLanguage,中文:超文本标记语言)是一种用于创建网页结构和内容的标记语言。它由一系列标签组成,这些标签描述了网页中的各个元素和其它相关信息。通过使用HTML标签和属性,开发人员可以定义文本、图像、链接、表格、表单等元素,并控制它们的外观和行为。本文主......
  • python笔记(3)基本数据类型简介
    目录python3的六个标准数据类型Numbers(数字) 数值运算String(字符串)List(列表)Tuple(元组)Sets(集合)set()函数有两用方式使用set运算Dictionaries(字典)python3的六个标准数据类型Numbers(数字)String(字符串)List(列表)Tuple(元组)Dictionaries(字典)Set(集合)......