我正在将基于 yocto 的发行版的 init 系统从 SysV init 切换到 systemd。在查看一些旧的 SysV init bash 脚本时,我意识到我无法完全摆脱这些脚本 - 有时在调用服务的可执行文件之前需要执行一些操作(即读取 u-boot 环境变量的值) ETC。)。此外,它不能分成不同的步骤(意味着将某些部分移动到 ExecStartPre 中),因为服务的可执行文件需要在相同的环境中运行(即 u-boot 变量值将作为参数传递给它)。因此,我最终会得到一些“包装器”bash 脚本,它们执行这些步骤,并在最后生成exec
主要可执行文件。
此类脚本有什么推荐的地方吗?我不想将它们保留在旧的 中/etc/init.d
,也不想将它们放入/bin
或/sbin
它们的等效项中/usr
- 这些位置中的任何一个都可能会诱使用户执行它们,我想避免这种情况。我更愿意将文件保存在专用于该特定 systemd 单元的路径中。我能想到的最好的方法是/lib/systemd/system/<unit>.d/
或/etc/systemd/<unit>.d/
,但我不确定这是否是一个好主意。
另外,作为一个附带问题:有什么方法可以从单元文件中获取单元名称,这样我就可以在此类脚本的路径中使用该名称,而不是对其进行硬编码?我猜想从模板实例化的单元可以提供这一点,但我不想为每个这样的单元使用模板。