Systemd ExecStartPre получает переменные перед ExecStart на следующей строке

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

/usr/bin/company_program --init.d `/usr/bin/lua -l company_exec -e 'dofile("/etc/company_profiles"); print(table.concat(company_exec.table_to_companyexec_argv(default), " "))'`

Как я могу перенести ее в ExecStartPre, которая запускается:

/usr/bin/lua -l company_exec -e 'dofile("/etc/company_profiles"); print(table.concat(company_exec.table_to_companyexec_argv(default), " "))'

Тогда подайте результат в ExecStart, который запускается:

/usr/bin/company_program --init.d `${previous_execstartpre_lua_result}`
1
задан 29 May 2017 в 09:56

3 ответа

Поместите обе строки в скрипт и запустите его из одной команды ExecStart=.

1
ответ дан 22 May 2018 в 22:07
  • 1
    я могу понять, почему я не могу включить его без скрипта? – Thomas G. Lau 31 May 2017 в 04:33
  • 2
    Поведение описано в man systemd.service в «Командных линиях». раздел. Как сказано там, «... Этот синтаксис должен быть очень похож на синтаксис оболочки, но понимаются только метасимволы и расширения, описанные в следующих параграфах ...». Можно установить переменную среды, которую читает более поздняя команда bash. См. gist.github.com/nickjacob/9909574 – Mark Stosberg 31 May 2017 в 15:57
  • 3
    Я вижу, поэтому на ExecStart есть ограничения, спасибо – Thomas G. Lau 1 June 2017 в 03:21

Поместите обе строки в скрипт и запустите его из одной команды ExecStart=.

1
ответ дан 18 July 2018 в 12:33

Поместите обе строки в скрипт и запустите его из одной команды ExecStart=.

1
ответ дан 24 July 2018 в 19:59

Другие вопросы по тегам:

Похожие вопросы: