通常,systemd 选项行允许什么格式?

通常,systemd 选项行允许什么格式?

我目前正在编写一些 systemd 服务文件,想知道如何正确格式化其内容,以便提高可读性等。这基本上是一个关于我是否能够实现某种代码风格的问题。

到目前为止读是关于对注释的支持,一些选项支持空格,例如值列表,\可用于连接多行。这几乎是一般建议。我没有阅读关于键值对本身的完整文档,例如,是否允许在键名之前/之后以及值之前放置空格或制表符以缩进行和所有这些东西。

以下是我问自己的一个例子:

[Unit]
Description=some pretty long description \
            spanning multiple lines
RequiresMountsFor=/tmp

对阵

[Unit]
Description       = some pretty long description \
                    spanning multiple lines
RequiresMountsFor = /tmp

对阵

[Unit]
    Description       = some pretty long description \
                        spanning multiple lines
    RequiresMountsFor = /tmp

有没有文档可以描述选项格式的可行性?或者缺少这些文档是否已经表明我想要的东西根本不可能实现?否则手册页中记录了...

答案1

作为2016 年 4 月,没有正式的语法定义。


我认为你能找到的最接近的文档是这一行:

语法灵感来自于XDG 桌面入口规范 .desktop文件,而这些文件又受到 Microsoft Windows.ini文件的启发。

...

请注意,对同一值进行多次赋值会导致单元文件与 XDG.desktop文件格式的解析器不兼容。

从那里,我们可以去描述“文件基本格式”的部分,其中声称:

条目

文件中的条目是{key,value}以下格式的成对条目:

Key=Value

等号前后的空格应被忽略;=符号是实际的分隔符。

A-Za-z0-9-键名称中只能使用字符。

由于大小写很重要,键NameNAME并不相同。

同一组中的多个键不能具有相同的名称。不同组中的键可以具有相同的名称。

很遗憾,根据邮件列表中的一些消息,它确实在一些地方有所偏差......并且除了查看解析器的源代码之外,似乎没有任何明确的文档。


您可以用它systemd-analyze verify <file>来验证您的单元文件。https://github.com/systemd/systemd/issues/3677

答案2

我会查看systemd你系统的手册页。格式似乎在第 5 节中指定,例如看这里. 您可以通过以下方式调用它man 5 systemd

相关内容