我读过的有关 systemd 单元文件的文档指出,可以在文件系统上的三个位置找到单元文件:
/etc/systemd/system/
:系统单元文件/run/systemd/system/
:运行时单元文件/lib/systemd/system/
(有时也/usr/lib/systemd/system/
):包的默认单元文件
据我所知,系统单元文件用于(可能是用户配置的)系统守护进程。我还了解默认包单元文件是与提供合理默认值的包安装一起提供的单元文件。
但是,我找不到解释运行时单元文件用途的文档。运行时单元文件有什么用?作为一名系统管理员,我可以创建一个吗?有哪些可以使用运行时单元文件解决的问题示例?为什么运行时单元文件优先于包单元文件,而不优先于系统单元文件?
答案1
从历史上看,运行时单元文件适用于机器生成的单元。它们应该覆盖相应的供应商单元(如果有),但设计为允许用户覆盖,因此定义的优先级。
如今,我认为它们很大程度上已被使用总线 API 生成的瞬态单元所取代;这些不会在任何地方显示为文件。
答案2
运行时文件/run/systemd/system
源于在当前启动期间对进程(单元)进行修改的能力,而无需在重新启动后保留该更改/修改。
从系统控制.1:
--runtime
When used with enable, disable, edit, (and related commands),
make changes only temporarily, so that they are lost on the
next reboot. This will have the effect that changes are not
made in subdirectories of /etc/ but in /run/, with identical
immediate effects, however, since the latter is lost on
reboot, the changes are lost too.
Similarly, when used with set-property, make changes only
temporarily, so that they are lost on the next reboot.
答案3
我从未见过 /run/systemd 在我的系统上用于单元文件。尽管当您只是从 /lib/systemd 运行未修改的单元文件时可以使用它。
通常 /lib/systemd 包含默认的单元文件和计时器(并且您永远不应该在那里编辑它们),而 /etc/systemd 包含启用的(指向 /lib/systemd 文件的链接)和自定义的单元文件和计时器。
您可以自定义计时器和单元文件,以sudo systemctl edit unit/timer
向原始文件添加一些内容或sudo systemctl edit --full unit/timer
完全编辑单元文件或计时器。
答案4
从阅读说明书开始这里对于给定的进程,运行时单元文件似乎只是另一种类型的 systemd 配置文件。
此外,它们是在运行时生成的,并在退出进程时删除。
如果有帮助,请在该页面上搜索“运行”并阅读所有条目。从那里,很容易得出同样的结论。