systemd 的目标、服务和套接字是什么?

drp*_*eas 45 systemd

我知道它们都是单元文件,但我无法理解它们的特殊含义。我认为目标类似于守护进程,套接字与套接字(IP + 端口)相同,但也与 inode 编号相同。任何人都可以用简单的词来解释它们吗?

rem*_*mmy 50

服务单位:

A unit configuration file whose name ends in .service encodes
information about a process controlled and supervised by systemd.
Run Code Online (Sandbox Code Playgroud)

systemd.service(5)

Systemd 服务单元是实际执行和跟踪程序和守护进程的单元,依赖关系用于确保服务以正确的顺序启动。它们是最常用的单位类型。

插座单元:

A unit configuration file whose name ends in ".socket" encodes
information about an IPC or network socket or a file system FIFO
controlled and supervised by systemd, for socket-based activation.
Run Code Online (Sandbox Code Playgroud)

systemd.socket(5)

另一方面,套接字单元实际上并不自己启动守护进程。相反,他们只是坐在那里监听 IP 地址和端口,或 UNIX 域套接字,当有东西连接到它时,套接字所用的守护进程就会启动,并将连接交给它。

这有助于确保占用大量资源但很少使用的大型守护进程不会一直运行并占用资源,而是仅在需要时启动。

目标单位:

A unit configuration file whose name ends in ".target" encodes
information about a target unit of systemd, which is used for grouping
units and as well-known synchronization points during start-up.
Run Code Online (Sandbox Code Playgroud)

systemd.target(5)

目标用于对单位进行分组和排序。它们有点类似于运行级别,因为在不同的目标、不同的服务、套接字和其他单元被启动。与运行级别不同,它们的形式更加自由,您可以轻松地为订购单元创建自己的目标,并且目标之间具有依赖关系。

例如,multi-user.target是大多数守护进程的分组,并且需要basic.target激活,这意味着分组的所有服务basic.target将在multi-user.target.


jas*_*yan 12

systemd 的文档非常适合这样一个相对较新的项目。从目标开始,从man systemd.target

目标单元在单元提供的通用功能之上不提供任何附加功能。它们的存在只是为了通过依赖项(用作引导目标)对单元进行分组,并为单元之间的依赖项中使用的同步点建立标准化名称。除此之外,目标单元是经典 SysV 初始化系统中 SysV 运行级别的更灵活替代品。

这些“单元组”涵盖了一系列不同的功能,从basic.target本质上涵盖系统启动,到从 dbus、gettys、挂载点到交换和计时器的所有内容。您可以查看完整列表man systemd.special

service文件是运行 systemd 控制的进程的基本单元。再次,来自man systemd.service

名称以 .service 结尾的单元配置文件对有关由 systemd 控制和监督的进程的信息进行编码。

这些构成了可以启动、停止、重新启动、重新加载的守护进程。

最后,套接字,来自man systemd.socket

名称以“.socket”结尾的单元配置文件对有关 IPC 或网络套接字或由 systemd 控制和监督的文件系统 FIFO 的信息进行编码,用于基于套接字的激活。

这些包括文件系统或 Internet 上的套接字,以及作为传输的经典 FIFO。每个套接字单元都有一个匹配的服务单元,如果第一个连接进入套接字或 FIFO,则启动该服务单元。

除了这些man页面之外,还值得阅读 Lennart 的系列博客文章systemd for Administrators,它提供了对 systemd 架构和实现的深入了解(该系列目前有 20 篇文章)。

  • 该文档什么也没告诉你 - 好吧,它没有添加通用功能之外的功能 - 好吧,如何?!建立标准化名称,如何?目标更灵活……因为什么?磁铁,它们 3$^@% 是如何工作的?!? (3认同)