Назад | Перейти на главную страницу

Получить возврат команды в служебном файле systemd, как в сценарии оболочки

У меня есть кластер CoreOS, в котором у меня есть служба SystemD, которая просто запускает контейнер Docker. Однако в целях гибкости я хочу, чтобы реестр Docker, из которого извлекается контейнер, был обнаружен при запуске службы, что я легко делаю с помощью Etcd (система обнаружения узлов из проекта CoreOS).

Итак, я попробовал это в обычном терминале, что просто дает мне такую ​​команду /usr/bin/etcdctl get /services/registryчтобы получить текущий IP-адрес реестра. И это работает! Но из службы SystemD команда возвращается как напечатанная, а не выполняется, как кто-то должен делать в сценарии оболочки с обратными кавычками. Я пробовал обратные кавычки, $() и ${}синтаксисы, но команда по-прежнему возвращается как есть.

Если у кого-то есть предложение, беру его :) Спасибо!

Если вы используете ExecStart /bin/sh -c "echo $(etcdctl ls /)" он будет работать так, как вы хотите.

Вот полный файл модуля, использующий это: https://github.com/coreos/unit-examples/blob/master/simple-fleet/apache-discovery.2.service#L6