Системные файлы 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

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

как сохранить настройки скрипта?

Как пропустить первую, последнюю непустую строку и пустые строки из модификации файла

найти совпадающие файлы в одном каталоге и подкаталогах

Как я могу получить процесс с самым большим pid?

Сколько оперативной памяти, дискового пространства и времени процессора используется скриптом

Новое окно терминатора на удаленном сервере

Сценарий работает неправильно при запуске

Как рассчитать проценты в LibreOffice Calc?

FTP и iptables. Соединение завершено с ошибкой, но порты открыты

Параметр ядра Linux «net.ipv4.tcp_workaround_signed_windows»

Есть ли способ сделать блок-блок Linux, который является просто смещением в существующее блочное устройство?

Откройте 2 экземпляра одной и той же программы

Bluestacks на Linux Fedora

Электронная почта не получена с помощью команды mail из терминала в CentOS

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