Системные файлы systemd – условные аргументы

Я пытаюсь преобразовать старый сценарий init в файл unitd.

Мой скрипт инициализирует файл конфигурации и в зависимости от некоторых переменных некоторые аргументы добавляются к демону.

Скрипт init делает что-то похожее на это:

## My daemon DAEMON="/usr/bin/my_daemon" ## These arguments are fixed: DAEMON_ARGS="-a -b -c" # Called on 'service my_service start' do_start() { ## Source config file . /etc/me/config_file ## If FOO is defined, add -x $FOO to arguments if [ -n "$FOO" ]; then DAEMON_ARGS="$DAEMON_ARGS -x $FOO" fi ## Start the daemon start-stop-daemon --start --quiet --exec $DAEMON -- $DAEMON_ARGS } 

Как я могу добиться такого же эффекта с файлом unit?

Изменить 1:

Вот файл скелетного блока:

 [Ед. изм]
 Описание = Мой сервис
 Хочет = local-fs.target
 Требуется = local-fs.target

 [Обслуживание]
 PIDFile = / вар / запустить / daemon.pid
 Тип = разветвление
 ExecStart = / usr / bin / my_daemon -a -b -c

 [Установить]
 RequiredBy = basic.target
 WantedBy = basic.target

Я хочу передать аргумент -x $FOO демону в ExecStart , но ТОЛЬКО, если $FOO определен в каком-либо файле конфигурации (скажем, / etc / me / config_file).

Я знаю, что могу читать EnvironmentFile , чтобы я мог:

 [Обслуживание]
 EnvironmentFile = / и т.д. / я / config_file
 ExecStart = / usr / bin / my_daemon -a -b -c -x $ FOO

Но FOO не может быть определен, поэтому аргумент -x будет иметь значения … и произойдет ошибка.

$FOO – это опция, которая считывается другими службами, поэтому не представляется возможным сделать FOO=-x <value> .

Interesting Posts

inputrc неправильно загружается

Запуск моего собственного приложения при запуске

производительность xorg в openoffice

Поиск строки в строке и добавление связанных строк

yum-builddep создает зависимости от источника

Система висит, когда заканчивается память

Обратная последовательность файла с инструментами POSIX?

Проверка активности пользователя в сценарии Bash

Не показывать первую строку с общими привязками клавиш в меню мутта

Использовать шрифт PSF в эмуляторе терминала X11

Как я могу ограничить пользовательское приложение для работы в определенном пространстве имен в сети?

Как создать псевдоним для команды git (включая пробелы)?

Моя малина pi направляет весь трафик на tun0, но мне нужно добавить исключение, чтобы разрешить входящее соединение ssh из wlan0

перенаправить вывод для команды, которая принимает несколько аргументов

Как запустить приложение GUI на X11-сервере удаленного сервера через SSH

Linux и Unix - лучшая ОС в мире.