systemd 的人不喜欢环境文件。

systemd 的人不喜欢环境文件。

我目前正在重写作业upstart以供使用systemd,我想知道:

“默认”位置在哪里EnvironmentFile

它可能会进入/etc/environment

它可能与 中的所有其他服务文件一起存在/etc/systemd/service/run/systemd/system或者但我在这些位置中/lib/systemd/system没有看到任何其他.EnvironmentFileService

我也争论过/etc/default/或者/etc/<PACKAGE_NAME>

没有记录在案的“常规”位置来放置它。我见过的许多示例似乎/tmp/<FILE_NAME>都没有意义,因为在重新启动时会被擦除,并且这些文件需要保留,以便在启动或重新启动/tmp时可以引用它们。Service


背景:我在安装 debian 软件包之前在预安装时生成EnvironmentFile(使用维护者脚本),并且我知道每次启动/重新启动服务时该文件都必须可用。

答案1

systemd 的人不喜欢环境文件。

所以没有一个。

多年来,一些 systemd 人员曾公开表示,环境文件是他们一开始就不应该提供给 systemd 的机制。

毕竟,本机 systemd 机制是服务单元文件本身,其中环境变量是通过Environment=键设置的。在他们看来,使用管理员定义的或特定于计算机的变量自定义服务环境只需放入.conf单元的片段文件,然后使用更多键设置其他环境变量Environment=

(但老实说,尝试将内容动态转换为适合EnvironmentFile=.[…]还有/etc/sysconfig一种真正应该消失的红帽主义,整个概念都是有缺陷的。添加新的/run/sysconfig/肯定会使情况变得更糟。)

EnvironmentFile=我可能一开始就不应该添加。打包者误解了单元文件受管理配置的约束,并且应该如此对待,并且将单元文件的配置拆分成单独的文件EnvironmentFiles=是一种非常无意义的不必要的间接游戏。

— 伦纳特·珀特林 (2015-12-09)。关于“环境文件”的查询。 systemd-开发。

使用EnvironmentFile=几乎总是一个坏主意,我们可能永远不应该添加它,因为它会邀请打包者重新引入我们试图消除的疯狂/etc/default//etc/sysconfig/
— 伦纳特·珀特林 (2015-07-22)。请考虑为整个单元文件添加变量。系统错误#618。 GitHub。

奖励内容

在 daemontools 世界中,我们有环境目录当然是用envdir/s6-envdir命令读取。尽管它不是 daemontools 的标准或要求,但习俗可以使用的与某些工具一致的方法是,环境目录被命名并与程序和其他内容env一起位于服务目录中。run

相关内容