Obtenha o comando return no arquivo de serviço systemd como no script Shell

2

Eu tenho um cluster CoreOS no qual eu tenho um serviço SystemD que apenas executa um contêiner Docker. No entanto, para fins de flexibilidade, quero que o Docker Registry do qual o contêiner seja retirado seja descoberto quando o serviço for iniciado, o que eu faço facilmente usando o Etcd (o sistema de descoberta de nós do projeto CoreOS).

Então, eu tentei em um terminal normal, o que só me dá um comando como este /usr/bin/etcdctl get /services/registry para obter o endereço IP atual do registro. E isso funciona! Mas a partir de um serviço SystemD, o comando é retornado como digitado e não executado como alguém deve fazer em um script Shell com backticks. Eu tentei backticks, $() e ${} syntaxes, mas o comando ainda é retornado como está.

Se alguém tem uma sugestão, eu estou tomando :) Obrigado!

    
por phndiaye 07.10.2014 / 11:45

1 resposta

3

Se você fizer o seu ExecStart usar /bin/sh -c "echo $(etcdctl ls /)" , ele funcionará da maneira que você deseja.

Aqui está um arquivo de unidade completo aproveitando isso: link

    
por 08.10.2014 / 01:38