26

一些应用程序,如ssh,有一个以@结尾的单元文件,如ssh服务[电子邮件保护]。它们包含不同的内容,但我无法理解在功能或目的上到底有什么不同。

这是我不知道的命名约定吗?

1

4个答案4

重置为默认值
34

正如其他人提到的,这是一个服务模板。在特定情况下[电子邮件保护],用于调用sshd(sshd)按需定制,经典风格内特(inetd)服务。

如果您希望SSH连接很少使用,并且希望绝对最小化sshd(sshd)的系统资源使用情况(例如在嵌入式系统中),可以禁用常规ssh服务而是启用ssh插座。然后套接字将自动启动[电子邮件保护](运行sshd-i)每当检测到TCP端口22(标准SSH端口)的传入连接时。这将减慢SSH登录过程,但不需要运行sshd(sshd)没有入站SSH连接时。

17

它是一个模板:https://www.freedesktop.org/software/systemd/man/systemd.service.html#service%20模板

它是通过创建指向的链接来实例化的[电子邮件保护]链接源在哪里[电子邮件保护]。的值实例可以在systemd单元文件中使用%我%我,并允许您编写可与参数一起多次使用的单个单元配置文件。

虽然最清晰的systemd文档是“服务模板”,但您可以模板化任何单元类型,如systemd.unit(5)手册页中所述:https://www.freedesktop.org/software/systemd/man/systemd.单位.html

12

这些是服务模板,设计为使用参数实例化(因此服务是template@参数,运行模板@带有给定参数的服务)。因此,可以在不同的情况下使用单个服务定义,而无需任何硬编码的细节。

您将看到的典型实例化服务是per-file系统服务,例如系统性fsck@服务,每个设备盖蒂s、 每个用户的用户管理器(用户@)等。可以使用与非模板化服务相同的方式设置它们systemctl启用等等,但许多都是由其他服务动态实例化的。

7

某些单元名称包含@标志(例如。[电子邮件保护]):此意味着他们是实例模板单元的实际文件名称不包含一串零件(例如。[电子邮件保护]).一串调用了实例标示符和类似于调用时传递给模板单元系统ctl命令:在它将替换的单位文件%我说明符。做得更多在尝试实例化[电子邮件保护]模板单元,systemd将实际查找具有精确[电子邮件保护]文件名,尽管按照惯例这样“冲突”很少发生,即大多数单元文件包含@标志的意思是成为模板。

来源

你必须登录来回答这个问题。

不是你想要的答案吗?浏览标记的其他问题.