Stack Exchange网络由183个问答社区组成,包括堆栈溢出是开发人员学习、分享知识和建立职业生涯的最大、最受信任的在线社区。
提出问题,找到答案,并与团队堆栈溢出协作。
提出问题,找到答案,并与团队堆栈溢出协作。探索团队
团队
工作问答
在一个结构化且易于搜索的位置内连接和共享知识。
一些应用程序,如ssh,有一个以@结尾的单元文件,如ssh服务和[电子邮件保护]。它们包含不同的内容,但我无法理解在功能或目的上到底有什么不同。
ssh服务
[电子邮件保护]
这是我不知道的命名约定吗?
正如其他人提到的,这是一个服务模板。在特定情况下[电子邮件保护],用于调用sshd(sshd)按需定制,经典风格内特(inetd)服务。
sshd(sshd)
内特(inetd)
如果您希望SSH连接很少使用,并且希望绝对最小化sshd(sshd)的系统资源使用情况(例如在嵌入式系统中),可以禁用常规ssh服务而是启用ssh插座。然后套接字将自动启动[电子邮件保护](运行sshd-i)每当检测到TCP端口22(标准SSH端口)的传入连接时。这将减慢SSH登录过程,但不需要运行sshd(sshd)没有入站SSH连接时。
ssh插座
sshd-i
它是一个模板: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
这些是服务模板,设计为使用参数实例化(因此服务是template@参数,运行模板@带有给定参数的服务)。因此,可以在不同的情况下使用单个服务定义,而无需任何硬编码的细节。
template@参数
模板@
您将看到的典型实例化服务是per-file系统服务,例如系统性fsck@服务,每个设备盖蒂s、 每个用户的用户管理器(用户@)等。可以使用与非模板化服务相同的方式设置它们systemctl启用等等,但许多都是由其他服务动态实例化的。
系统性fsck@
盖蒂
用户@
systemctl启用
某些单元名称包含@标志(例如。[电子邮件保护]):此意味着他们是实例模板单元的实际文件名称不包含一串零件(例如。[电子邮件保护]).一串是调用了实例标示符和类似于调用时传递给模板单元系统ctl命令:在它将替换的单位文件%我说明符。做得更多在尝试实例化[电子邮件保护]模板单元,systemd将实际查找具有精确[电子邮件保护]文件名,尽管按照惯例这样“冲突”很少发生,即大多数单元文件包含@标志的意思是成为模板。
@
一串
来源