一般的に、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-使用できます。

大文字と小文字が区別されるため、キーNameとキーはNAME同等ではありません。

同じグループ内の複数のキーに同じ名前を付けることはできません。異なるグループ内のキーに同じ名前を付けることはできます。

残念ながら、メーリングリストへのいくつかのメッセージによるとただし、いくつかの場所では逸脱しています...また、パーサーのソース コードを確認する以外に、明示的なドキュメントは存在しないようです。


systemd-analyze verify <file>ユニット ファイルを検証するために使用できます。参考:

答え2

systemdシステムのマニュアルページを参照してください。フォーマットはセクション5で指定されているようです。こちらをご覧ください. これは、例えば次のように呼び出すことができますman 5 systemd

関連情報