Какое форматирование разрешено для системных опций вообще?
Сейчас я пишу некоторые файлы службы 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
Доступны ли какие-либо документы, описывающие возможные варианты форматирования параметров? Или отсутствие такого уже признака того, что я хотел бы получить, вообще невозможно? Остальное будет задокументировано на странице руководства...
2 ответа
По состоянию на апрель 2016 года нет формального определения синтаксиса.
Я думаю, что в документации лучше всего подойдет эта строка:
Синтаксис основан на спецификации XDG Desktop Entry.
.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
Я бы посетил systemd
Страница man в вашей системе. Формат, кажется, указан в разделе 5, см. Здесь. Вы можете вызвать это, например, man 5 systemd
,