CentOS 7 systemd.exec 配置:LogsDirectory 和 CacheDirectory 的替代品?

CentOS 7 systemd.exec 配置:LogsDirectory 和 CacheDirectory 的替代品?

在 CentOS Linux 7.8 系统上,如果我创建一个 systemd 服务配置文件并在部分中包含LogsDirectory和/或,然后执行,则会打印以下错误:CacheDirectory[Service]systemctl daemon-reload/var/log/messages

Sep  8 13:14:50 model systemd: [/etc/systemd/system/hugo-sbml.service:18] Unknown lvalue 'CacheDirectory' in section 'Service'
Sep  8 13:14:50 model systemd: [/etc/systemd/system/hugo-sbml.service:19] Unknown lvalue 'LogsDirectory' in section 'Service'

的手册页systemd.exec令人困惑:它没有记录LogsDirectoryCacheDirectory,但它列出与它们相关的故障相关的错误代码。通过 Google 搜索,这些设置似乎在 systemd 配置文件中被广泛使用。

CentOS 7 上服务配置文件中的LogsDirectory和设置是否有替代品?或者换句话说,如果我们需要创建日志和缓存目录,我们该怎么办?CacheDirectorysystemd

答案1

这是某种文档错误。您正在寻找的指令在 CentOS 7 使用的 systemd 219 中不存在。它们是在 systemd 235 中添加。您可以在具有 systemd 239 的 CentOS 8 中使用它们。您也可以自己创建这些目录。

  • 单元获得了新选项 StateDirectory=、CacheDirectory=、LogsDirectory= 和 ConfigurationDirectory=,它们与 RuntimeDirectory= 密切相关,但管理 /var/lib、/var/cache、/var/log 和 /etc 下的每个服务目录。通过使用它们,可以编写单元文件,这些文件在激活时会自动在这些位置获得适当拥有的服务特定目录,从而使单元文件自包含并提高与无状态系统和出厂重置的兼容性,其中 /etc 或 /var 在启动时未填充。与这些新设置匹配的还有 StateDirectoryMode=、CacheDirectoryMode=、LogsDirectoryMode=、ConfigurationDirectoryMode=,用于配置这些目录的访问模式。这些设置与 DynamicUser=yes 结合使用特别有用,因为它们为存储提供了安全、适当拥有、可写和有状态的位置,而这些位置被排除在这些服务所在的沙盒之外。

答案2

根据变更日志消息,选项StateDirectory=, CacheDirectory=, LogsDirectory= and ConfigurationDirectory=是 235 中的新选项。219 处的 EL 7 没有这些选项。

您需要想出一些不受 systemd 管理的方法来在/var/log/和下创建这些目录/var/cache/。创建拥有这些目录的 RPM 包,将包装器脚本添加到 systemd 单元mkdir,更改软件以创建其日志和缓存目录(如果它们不存在)。

是的,有点令人失望的是,日志和缓存目录的存在并不包含在单元中。一旦 systemd 升级,换句话说,升级到 CentOS 8,您就可以使用该功能。

相关内容