Enlace simbólico como WorkingDirectory en el servicio systemd

8

Tengo un servicio con el WorkingDirectory=/srv/ctr/currentcual es un enlace simbólico.

Parece que el servicio no detecta cambios en el enlace simbólico cuando se reinicia. El registro de errores informa /srv/ctr/releases/69como la ubicación pero /srv/ctr/currentapunta a /srv/ctr/releases/72. ¿Hay alguna forma en que pueda hacer que systemd detecte el nuevo cambio de directorio?

Reed G. Law
fuente
¿Lo has intentado systemctl daemon-reload? Podría desencadenar una nueva lectura del enlace simbólico.
morloch
@morloch sí, lo intenté. El servicio que estoy ejecutando es resque . Me pregunto si la ruta se almacena de alguna manera en el trabajo en sí.
Reed G. Law
3
Intente agregar ExecStartPre=/bin/pwd -Pa su servicio, vuelva a cargar / reiniciar el servicio y verifique los registros. Al menos entonces sabrás si es systemd o resque ...
morloch
@morloch que funcionó y ahora de alguna manera está encontrando el directorio correcto.
Reed G. Law
Tuve el mismo problema. SystemD resolverá el SymLink a la ruta real y lo usará. No he encontrado una manera de deshabilitar este comportamiento. Ahora simplemente he movido mis cosas al objetivo del enlace simbólico y creo un nuevo enlace en la otra dirección ...
Martin Rauscher

Respuestas:

2

Posiblemente intente agregar:

Environment = PWD=/srv/ctr/current

(Por cierto, estoy muy feliz de ver a alguien más usando /srv/*sus servicios).

Duque
fuente
Antigua pregunta, pero quería decir que esto funcionó para mí en el sistemad de Centos 8.1, mientras que el comentario de @morloch no.
Yoopergeek
0

modifique su archivo de unidad systemd para que sea el siguiente:

  • WorkingDirectory = / srv / ctr /
  • ExecStart = / bin / start current o ExecStart = cd current && / bin / start
Ahmed Hamdy Hammad
fuente