我目前正在编写一些 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-
键名称中只能使用字符。由于大小写很重要,键
Name
和NAME
并不相同。同一组中的多个键不能具有相同的名称。不同组中的键可以具有相同的名称。
很遗憾,根据邮件列表中的一些消息,它确实在一些地方有所偏差......并且除了查看解析器的源代码之外,似乎没有任何明确的文档。
您可以用它systemd-analyze verify <file>
来验证您的单元文件。https://github.com/systemd/systemd/issues/3677
答案2
我会查看systemd
你系统的手册页。格式似乎在第 5 节中指定,例如看这里. 您可以通过以下方式调用它man 5 systemd
。