我目前正在編寫一些 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
。