Link simbólico como WorkingDirectory no serviço systemd


8

Eu tenho um serviço com o WorkingDirectory=/srv/ctr/currentqual é um link simbólico.

Parece que o serviço não capta alterações no link simbólico quando reiniciado. O log de erros relata /srv/ctr/releases/69como o local, mas /srv/ctr/currentaponta para /srv/ctr/releases/72. Existe alguma maneira de obter o systemd para captar a nova alteração de diretório?


Você já tentou systemctl daemon-reload? Pode desencadear uma releitura do link simbólico.
Morloch

@morloch sim, eu tentei isso. O serviço que estou executando é resque . Gostaria de saber se o caminho está de alguma forma armazenado no próprio trabalho.
Reed G. Lei

3
Tente adicionar ExecStartPre=/bin/pwd -Pao seu serviço, recarregar / reiniciar o serviço e verificar os logs. Pelo menos, então você saberá se ele está systemd ou resque ...
Morloch

@morloch que funcionou e agora de alguma forma está encontrando o diretório certo.
Reed G. Lei

Eu tive o mesmo problema. O SystemD resolverá o SymLink para o caminho real e o usará. Não encontrei uma maneira de desativar esse comportamento. Eu agora simplesmente se mudou minhas coisas para o alvo symlink e criar um novo link no outro sentido ...
Martin Rauscher

Respostas:


2

Possivelmente tente adicionar:

Environment = PWD=/srv/ctr/current

(BTW, muito feliz em ver alguém usando /srv/*seus serviços.)


Questão antiga, mas queria dizer que isso funcionou para mim no systemd do Centos 8.1, enquanto o comentário do @ morloch não.
Yoopergeek 04/04

0

modifique o arquivo da unidade systemd para o seguinte:

  • Diretório de Trabalho = / srv / ctr /
  • ExecStart = / bin / start current ou ExecStart = cd current && / bin / start
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.