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?

Reed G. Law
fonte
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.)

Duque
fonte
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
Ahmed Hamdy Hammad
fonte