Общий синтаксис файлов конфигурации systemd#

Описание#

В данном разделе приведены основные принципы оформления файлов конфигурации, используемых systemd.

Каждый файл представляет собой простой текстовый файл, разделенный на разделы, с записями конфигурации в формате key=value. Пробелы непосредственно перед и после = игнорируются. Пустые строки и строки, начинающиеся с # или ;, игнорируются, что может использоваться для комментирования.

Строки, заканчивающиеся на обратную косую черту (\), при чтении объединяются со следующей строкой, а обратная косая черта заменяется пробелом. Это может использоваться для переноса длинных строк. Ограничение на длину строки очень велико (в настоящее время 1 МБ), но рекомендуется избегать таких длинных строк и использовать несколько директив, подстановку переменных или другой механизм, подходящий для данного типа файла.

Когда строка или строки комментария следуют за строкой, заканчивающейся на обратную косую черту, блок комментария игнорируется, поэтому продолжающаяся строка объединяется с тем, что следует за блоком комментария.

Пример синтаксиса файлов конфигурации:

[Section A]
KeyOne=value 1
KeyTwo=value 2

# Комментарий

[Section B]
Setting="параметр1" "параметр2" "..."
KeyTwo=value 2 \
       value 2 continued

[Section C]
KeyThree=value 3\
# эта строка будет прогнорирована
; эта строка будет также прогнорирована
       value 3 continued

Булевы аргументы, используемые в файлах конфигурации, могут быть записаны в различных форматах:

  • 1, yes, true, on — для положительных настроек, эквивалентны;

  • 0, no, false, off — отрицательных настроек, эквивалентны.

Значения временного интервала, закодированные в файлах конфигурации, могут быть записаны в разных форматах. Отдельное число указывает время в секундах. Если суффиксом является единица времени, то эта единица учитывается. Поддерживается указание нескольких значений с разными единицами измерения, в этом случае значения суммируются. Пример:

  • 50 — 50 секунд;

  • 2min 200ms — 2 минуты и 200 миллисекунд (всего 120200 миллисекунд).

Используются следующие единицы времени: s, min, h, d, w, ms, us.

Различные параметры могут быть указаны более одного раза. В этом случае интерпретация зависит от настроек. Иногда несколько настроек образуют список, для «сброса» и игнорирования предыдущих назначений может использоваться установка пустого значения. Если это допустимо, об этом будет сказано в описании настройки.

Примечание

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

Правила Quoting#

Для настроек, в которых разрешено использование кавычек, применяются следующие общие правила:

  • Двойные ("...") и одинарные кавычки ('...') могут использоваться для выделения целого элемента (открывающая кавычка может появляться только в начале или после пробела, который не заключен в кавычки, а закрывающая кавычка должна сопровождаться пробелом или концом строки). В этом случае весь текст до следующей соответствующей кавычки становится частью того же элемента. Сами кавычки при интерпретации удаляются.

  • Поддерживаются экранирования в стиле языка C. В таблице ниже приведен список известных шаблонов экранирования. Разрешены только шаблоны экранирования, которые соответствуют синтаксису в таблице; в будущем могут быть добавлены другие шаблоны, а неизвестные шаблоны приведут к предупреждению. В частности, любые обратные косые черты \ должны быть удвоены.

  • Завершающий обратный слеш (\) может использоваться для объединения строк, как описано выше.

Ниже в таблице приведены поддерживаемые шаблоны экранирования:

Поддерживаемые шаблоны экранирования#

Шаблон

Фактическое значение

\a

Звуковой сигнал (bell)

\b

Символ возврата (backspace)

\f

Перевод страницы (form feed)

\n

Новая строка (newline)

\r

Возврат каретки (carriage return)

\t

Табуляция (tab)

\v

Вертикальная табуляция (vertical tab)

\\

Обратный слеш (backslash)

"

Двойная кавычка (double quotation mark)

'

Одинарная кавычка (single quotation mark)

\s

Пробел (space)

\xxx

Номер символа xxx в шестнадцатеричной кодировке HEX

\nnn

Номер символа nnn в восьмеричной кодировке OCT

\unnnn

Кодовая точка Unicode nnnn в шестнадцатеричном кодировании HEX

\Unnnnnnnn

Кодовая точка Unicode nnnnnnnn в шестнадцатеричном кодировании HEX

Примечание

Поддерживается кодировка UTF-8, поэтому типичные символы Unicode экранировать не нужно.