为什么我的service-unit-file是文件,而其他的是目录?

为什么我的service-unit-file是文件,而其他的是目录?

我创建了一个服务单元来运行 apache-httpd 并且它正在工作,但我担心我的服务单元配置文件是一个文件,但目录(/etc/systemd/system)中的其他项目都是目录,所以我的文件看起来像是一个异常:

enter image description here

它有效,但为什么我的定义与其他人不同?

我用的是“技术指南”中创建服务单元的说明

答案1

您显示的其他目录是.wants-.d它们不包含整个服务文件(该文件将存在于/lib/systemd/system通过包安装的服务中),而仅包含修改。

例如,如果您运行systemctl edit (servicename).service进行更改,也许您想设置其他环境变量,您将自动获得/etc/systemd/system/servicename.d/override.conf包含您的更改的 。

这样做的目的是彻底分离管理员所做的本地更改/etc/和包管理的服务定义,/lib/systemd/system这些定义可能会随着包更新而接收更改。

答案2

单位是两个都文件目录。这完全的有关单元的信息在两者上分发并从中读取。

强制文件以.service.target.socket.timer.mount等结尾。

可选目录以.service.d.service.requires.target.wants等结尾。以结尾的.d包含常规文件。以符号链接结尾.wants.requires包含符号链接的链接。有关详细信息,请阅读systemd.unit手册。

在您的情况下,文件和(当前不存在)目录都位于/etc/systemd.您,本地管理员,是两者的来源。对于其他单元,文件位于其他位置,例如 under /usr/lib/systemd,目录位于/etc/systemd.这反映了这样一个事实:文件部分是由软件包提供的,而目录部分是作为本地管理员选择和修改(例如修改Wants一个单元的设置以启用某些其他单元)的结果而创建的。

systemd 的模型是,/usr/lib/systemd和下的内容/usr/local/lib/systemd是包提供的, 下内容/run/systemd是在系统运行时动态创建的, 下内容/etc/systemd是由本地系统管理员确定的。所有四个区域中的常规文件、目录和符号链接(可能涉及多个system子目录,详细信息请参阅手册)都被合成为完整的单元信息,并具有关于优先级的规则。

相关内容