什么使systemd与其他init系统区分开?


23

它不是很正式,但是好像systemd即将进入Debian,在阅读了有关该决定的一些热门邮件列表讨论之后,我对Linux用户中systemd的两极化性质感到好奇。我运行Debian(sysvinit)和Gentoo(OpenRC)系统,但对systemd却一无所知,尽管看起来它正在以我的方式出现。

我已经看到了这个相关的问题,询问了systemd vs upstart的优缺点,但是距该问题发布已经三年了,我敢肯定那段时间情况已经改变。

我的问题是:systemd与其他init系统相比如何?

  • 是什么让它与众不同-其他init系统无法做什么?
  • 从另一个init系统切换到它有什么损失吗?
  • 管理systemd与其他系统相比如何?

1
使用Gentoo,您可以亲身体验systemd并使其运行起来非常轻松!

我特别感兴趣的一件事是用户会话。他们现在工作得很好,但有一些例外。我觉得大多数其他初始化系统都忽略了这一点。
克里斯·

@ChrisDown,启动/停止系统以及管理其服务是基本功能,最好将其紧密集成(因此,“尝试的灵丹妙药”是一个错误的错误描述)。此外,不仅仅是Lennart一家,所有发行版的人都在为此工作。
vonbrand

@ChrisDown,请不要荒谬。systemd现在不包括Web服务器,也不会这样做,也不会在路线图中读取QR。请检查所有内容,考虑到我们所说的所有重要发行版(到目前为止,Ubuntu除外)都将其用作默认值(开源人士倾向于疯狂独立,如果他们不这样做,将没有“压力”促使他们这样做) (不相信这是最好的选择)。
vonbrand 2014年

如今,甚至RHEL7也都附带了systemd。让我想知道地狱Py3k何时会成为发行版中的默认python解释器。
yegle 2014年

Answers:


26

您可能想知道的所有信息都在Debian项目所使用的要使用的 Deit 初始化系统 ”页面上,该页面决定了要使用的初始化系统。在该页面内,有一个指向每个initsystem选择的单独链接。

有关Systemd的入门知识,此页面包含了入门所需的一切,RHEL7:How to Started Systemd

我发现其他有助于更好地了解2种主要选择的资源,此外,我还将阅读有关相应技术的Wikipedia页面:

Gentoo项目还对各个系统中的一些关键功能进行了很好的比较:

我对你的问题的看法

问题1: systemd与其他init系统相比如何?

在SE回答的范围内,这是一个非常棘手的问题,因此,我宁愿参考上面引用的各种资源。我会这样说。在通读许多有关systemd替代方案的文章时,它试图解决许多方面的问题,这些方面是以前用于在Linux系统上启动服务的工具所欠缺的。它具有经过深思熟虑的设计,并正在尝试以非常模块化的方式提供它。

系统组件

   系统组件的ss

因此,IMO,我想说它在设计工作,执行该设计以及几个较大的Linux发行版采用它方面都非常有利。

问题2:什么使它与众不同-其他init系统不能做什么?

有许多sytemd其他系统无法做到的事情。其最强大的功能中的3个可能是:

  1. 记录中
  2. 资源限制
  3. 处理分叉的守护程序

1.记录

在日志记录方面,systemd已经建立了一个名为“ Journal”的新日志记录系统,该服务称为systemd-journald.service。这是它自己的主题,您可以在本文标题为:介绍期刊的更多文章中阅读。这是一个用户“ harald”登录的示例。

_SERVICE=systemd-logind.service
MESSAGE=User harald logged in
MESSAGE_ID=422bc3d271414bc8bc9570f222f24a9
_EXE=/lib/systemd/systemd-logind
_COMM=systemd-logind
_CMDLINE=/lib/systemd/systemd-logind
_PID=4711
_UID=0
_GID=0
_SYSTEMD_CGROUP=/system/systemd-logind.service
_CGROUPS=cpu:/system/systemd-logind.service
PRIORITY=6
_BOOT_ID=422bc3d271414bc8bc95870f222f24a9
_MACHINE_ID=c686f3b205dd48e0b43ceb6eda479721
_HOSTNAME=waldi
LOGIN_USER=500

2&3.分叉的资源限制和守护程序

systemd在这里使用一种新颖的方法cgroups来同时包含和限制资源,这些服务需要分叉或限制对资源的访问。

摘抄

Systemd对于跟踪fork的守护程序问题有一个非常聪明的解决方案,该守护程序恰巧同时处理资源限制。在Upstart使用ptrace监视分支的情况下,systemd在控制组(需要Linux 2.6.24或更高版本)中运行每个守护程序,该守护程序无法通过任何数量的分支从中退出。这允许对派生和非派生守护程序进行轻松的资源限制,因为控制组是针对此类事物而创建的。

资料来源:守护进程对决:新贵vs. Runit vs. Systemd vs.马戏团vs.神

Q#3:从另一个init系统切换到它有什么损失吗?

通过Upstart或sysV init切换到systemd的最大警告可能是必须包含许多新的复杂性。Systemd有很多活动部件,并且功能极为丰富,加上这些附加功能,您可能会花费大量时间来了解其全部工作原理。

问题4:管理systemd与其他系统相比如何?

如我在上面对Q#3的回答中所述。我再次在这里重申。sysV init对于学习如何在几小时到几天内进行管理和导航非常琐碎,Upstart可能会花您一周或更长时间来加快速度,而systemd可能会花您更长的时间,我预计将花费几小时几周的时间来获得关于它的足够的粗略知识,在这里我都将能够产生自己的.service文件,从而像现在使用sysV init一样轻松地停止/启动服务。

参考文献


@Caleb,问题非常复杂,而且对于许多人来说是一个棘手的问题。我相信答案是正确的
vonbrand 2014年

@Caleb-是的,非常欢迎,感谢您的反馈。
slm
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.