Установка "EnvironmentFile" через systemctl - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть служба, которая должна загрузить EnvironmentFile.Я смог заставить это работать, вручную напечатав имя файла в соответствующем служебном файле.Однако я пытаюсь сделать это с помощью более автоматизированного подхода, например, используя что-то вроде systemctl, поэтому мне не нужно редактировать файлы с помощью регулярных выражений.

Я попробовал следующее:

sudo systemctl set-property supervisor EnvironmentFile=/etc/default/supervisor

, но получала следующую ошибку:

Failed to set unit properties on supervisor.service: Cannot set property EnvironmentFiles, or unknown property.

Есть ли способ сделать это через systemctl?

1 Ответ

0 голосов
/ 03 января 2019

Вы можете использовать функцию systemctl edit, чтобы сделать это.Если все сделано в интерактивном режиме, то это все, что вам нужно.Если вы делаете это в скрипте, то вы можете сделать это:

SYSTEMD_EDITOR=tee systemctl edit --user [your_unit_name] < $(echo "EnvironmentFile=/etc/default/supervisor")

или для --system единиц

env SYSTEMD_EDITOR=tee sudo -E systemctl edit --system [your_unit_name] < $(echo "EnvironmentFile=/etc/default/supervisor")

Thisдобавит модификатор в файл <unit>.d/override.conf.Я бы не советовал даже пытаться использовать функцию edit --full, так как она создает статические блоки, которые являются липкими и портят ваши операции включения / выключения (по крайней мере, в Ubuntu ваш пробег может отличаться).

...