systemd 范围内的模式或模板?

systemd 范围内的模式或模板?

我正在使用一个外部服务,该服务创建自己的 systemd 范围,例如system.slice/someapp.slice/instance-400.scopeuser.slice/user-1000.slice/app-1234.scope

范围名称嵌入了 pid,因此它们是动态的。IdName都与单元名称完全匹配。

systemd 是否提供了任何方法来编写.scope单元文件,该文件将[Scope]通过名称模式匹配将属性应用于范围的所有实例,或者这是否只能在启动应用程序的配合下才能完成?

详细信息/相关信息:在 gnome-shell 会话中自动将 systemd 控制组资源限制应用于特定用户应用程序

答案1

插入文件似乎允许这种覆盖。请参阅man systemd.unit本文档,如下所述。我认为允许插件应用而忽略动态部分(PID)的关键功能是:

此外,对于包含破折号(“-”)的单元名称,还会搜索通过重复截断所有破折号后的单元名称而生成的目录集。具体来说,对于单元名称 foo-bar-baz.service,不仅会搜索常规插入目录 foo-bar-baz.service.d/,还会搜索 foo-bar-.service.d/ 和 foo-.service.d/。这对于为名称以通用前缀开头的一组相关单元定义通用插入目录非常有用。

我能够使用以下命令为用户切片创建这样的覆盖(请注意最后一个破折号后缺少 PID):

~$ systemctl --user edit --force app-.scope

打开文件编辑器,您可以在其中添加其他选项。例如:

[Scope]
OptionOne=value
OptionTwo=value

您可以使用以下方法确认插件的存在:

~$ systemctl --user status app-1234.scope
[...]
Drop-In: /home/foo/.config/systemd/user/app-.scope.d
             └─override.conf
[...]

对于系统切片,方法可能类似,除了--user传递给的标志之外systemctl

相关内容