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


35

我知道它们都是单位文件,但我无法理解它们的特殊含义。我认为目标类似于守护程序,套接字与套接字(IP +端口)相同,但也具有inode编号。谁能用简单的话解释一下?


3
系统man页面是示例性的:您看过man systemd.{service,socket,target}吗?
jasonwryan 2014年

@jasonwryan实际上我看了看,没有完整的答案。我盯着这个线程,以便我也可以学习。我知道什么是服务,一个套接字,但是在目标方面存在差距。我仍在研究中,如果对我来说足够清楚,它将回答这个问题。
LD詹姆斯

Answers:


40

服务单位:

A unit configuration file whose name ends in .service encodes
information about a process controlled and supervised by systemd.

systemd.service(5)

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

插座单位:

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.

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.

systemd.target(5)

目标用于分组和排序单位。它们在某种程度上与运行级别大致等效,因为它们在不同的目标,不同的服务,套接字和其他单元处启动。与运行级别不同,它们是自由格式,您可以轻松地为订购单位创建自己的目标,而目标之间也具有依赖性。

例如,multi-user.target大多数守护程序在其下进行分组,并且需要basic.target将其激活,这意味着分组在其下的所有服务将在中的服务basic.target之前启动multi-user.target


11

对于这样一个相对较新的项目,systemd的文档非常出色。要从目标开始,请从man systemd.target

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

这些“单元组”涵盖了一系列不同的功能,从basic.target本质上讲涵盖了系统启动,直至从dbus,getty,安装点到swap和计时器的所有操作。您可以使用查看完整列表man systemd.special

服务文件是运行由systemd控制的进程的基本单元。同样,来自man systemd.service

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

这些构成可以启动,停止,重新启动,重新加载的守护程序。

最后是来自的套接字man systemd.socket

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

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

除了这些man页面之外,值得阅读Lennart的针对Administrators的系列博客文章,该系列文章深入探讨了systemd的体系结构和实现(该系列中目前有20篇文章)。

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.