Как настроить параметры для файла unitd?

Блог systemd содержит две статьи, которые советуют использовать / etc / sysconfig или / etc / default:

  • http://0pointer.de/blog/projects/on-etc-sysinit.html
  • http://0pointer.de/blog/projects/the-new-configuration-files.html

Какие существуют альтернативы для настройки системных параметров для файла unitd?

Варианты, которые я рассмотрел:

  • вместо этого создайте блок шаблонов и используйте спецификатор

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

  • переопределить Execstart файла устройства локально с помощью каталога unitd.d

Недостатком здесь является то, что для этого требуется переопределить весь Execstart . Его нельзя использовать, чтобы просто указать один параметр.

Это зависит от того, какой параметр вы пытаетесь настроить. Если это папка (например, домашний каталог, среда выполнения и т. Д.), Systemd предоставляет это через переменные.

В противном случае вы можете использовать файл окружения для указания параметров, а затем включить служебные единицы в переменные в этих файлах. Например, файл службы будет содержать следующее (в дополнение к обычным параметрам):

 [Service] Environment=ENV_OPTION_1=0 ENV_OPTION_2=linux EnvironmentFile=/etc/default/program-name ExecStart=/usr/bin/program $ENV_OPTION_1 ${ENV_OPTION_2} и [Service] Environment=ENV_OPTION_1=0 ENV_OPTION_2=linux EnvironmentFile=/etc/default/program-name ExecStart=/usr/bin/program $ENV_OPTION_1 ${ENV_OPTION_2} по [Service] Environment=ENV_OPTION_1=0 ENV_OPTION_2=linux EnvironmentFile=/etc/default/program-name ExecStart=/usr/bin/program $ENV_OPTION_1 ${ENV_OPTION_2} 

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

 ENV_OPTION_1=8913 ENV_OPTION_2=ubuntu 

Environment – это параметры по умолчанию, которые могут потребоваться.

Значения среды затем используются в ExecStart как показано выше. Обратите внимание: если значение может быть разделено пробелами, вам нужно использовать синтаксис ${} .