一般來說,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

相關內容