我目前正在重写upstart
要使用的工作systemd
,我想知道:
的“默认”位置在EnvironmentFile
哪里?
它可能会进入/etc/environment
它可能与 中的所有其他服务文件一起存在/etc/systemd/service
,/run/systemd/system
或者/lib/systemd/system
但我EnvironmentFile
在这些位置中看不到任何其他 s 中的任何其他Service
.
我也辩论过/etc/default/
或/etc/<PACKAGE_NAME>
没有记录的“常规”位置可以放置它。我见过的许多示例似乎/tmp/<FILE_NAME>
都没有意义,因为在重新启动时会被擦除,并且这些文件需要保留,以便在启动或重新启动/tmp
时可以引用它们。Service
背景:我EnvironmentFile
在安装 debian 软件包之前生成预安装时间(使用维护者脚本),并且我知道每次启动/重新启动服务时该文件都必须可用。
systemd 的人不喜欢环境文件。
所以一个都没有。
多年来,有几个 systemd 的人记录在案,他们说环境文件是一种他们一开始就不应该提供给 systemd 的机制。
原生 systemd 机制毕竟是服务单元文件本身,其中环境变量是用
Environment=
键设置的。在他们看来,使用管理员定义的或特定于机器的变量来定制服务的环境是在单元的片段文件中放置的问题,这些单元使用更多的键.conf
设置其他环境变量。Environment=
— Lennart Poettering (2015-12-09)。关于“EnvironmentFile”的查询。系统开发。
— Lennart Poettering (2015-07-22)。请考虑为整个单元文件设置变量。系统错误 #618。GitHub。奖励内容
在 daemontools 世界中,我们当然有环境目录
envdir
,使用/s6-envdir
命令读取。尽管它不是 daemontools 的标准或要求,但可以使用的约定与某些工具一致,即环境目录被命名并与程序和其他东西env
一起存在于服务目录中。run