Какое форматирование разрешено для системных опций вообще?

357
Thorsten Schöning

Сейчас я пишу некоторые файлы службы 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

2 ответа на вопрос

0
mvw

Я бы посетил systemdстраницу руководства вашей системы. Формат, кажется, указан в разделе 5, см. Здесь . Вы можете вызвать это, например, с помощью man 5 systemd.

Это то, что я читал и имел в виду. Таким образом, вы говорите, ничего кроме того, что упомянуто, возможно? Я надеялся, что это будет только отсутствие документации. Thorsten Schöning 6 лет назад 0
ОК, вы не упомянули об этом в своем первоначальном вопросе. Нет, я не претендовал на доступность других источников. Если сомневаетесь, сделайте несколько экспериментов. Вы можете просмотреть [источник] (https://github.com/systemd/systemd) для синтаксического анализатора и его грамматики. А [страница проекта] (https://www.freedesktop.org/wiki/Software/systemd/) может дать вам ссылки на дополнительные ресурсы. mvw 6 лет назад 0
@mvw Это не ответ. Это должно быть удалено. jpaugh 6 лет назад 0
@jpaugh Нет необходимости удалять, mvw был прав, мой вопрос не упоминал, что я уже прочитал эту справочную страницу и был неясен. Хотя это не совсем то, что я ищу, ссылки на эти справочные страницы часто помогают. Thorsten Schöning 6 лет назад 0
0
Bob

По состоянию на апрель 2016 года нет формального определения синтаксиса.


Я думаю, что в документации лучше всего подойдет эта строка:

Синтаксис основан на файлах спецификации входа рабочего стола XDG.desktop, которые в свою очередь основаны на .iniфайлах Microsoft Windows .

...

Обратите внимание, что использование нескольких присвоений одному и тому же значению делает файл модуля несовместимым с анализаторами для формата .desktopфайла XDG .

Оттуда мы можем перейти к разделу, описывающему «основной формат файла», который утверждает:

Записи

Записи в файле являются парами в формате:

Key=Value

Пробел до и после знака равенства следует игнорировать; =знак является фактическим ограничителем.

В A-Za-z0-9-именах клавиш могут использоваться только символы .

В зависимости от обстоятельств, ключи Nameи NAMEне эквивалентны.

Несколько ключей в одной группе могут не иметь одно и то же имя. Ключи в разных группах могут иметь одинаковые имена.

К сожалению, согласно некоторым сообщениям в списке рассылки, он действительно отклоняется в нескольких местах ... и, если не смотреть на исходный код синтаксического анализатора, похоже, нет какой-либо явной документации.


Вы можете использовать systemd-analyze verify <file>для проверки файлов вашего устройства. https://github.com/systemd/systemd/issues/3677

Похожие вопросы