Symlink comme WorkingDirectory dans le service systemd

8

J'ai un service avec WorkingDirectory=/srv/ctr/currentlequel est un lien symbolique.

Il semble que le service ne détecte pas les modifications dans le lien symbolique au redémarrage. Le journal des erreurs indique /srv/ctr/releases/69l'emplacement mais les /srv/ctr/currentpoints vers /srv/ctr/releases/72. Existe-t-il un moyen de faire en sorte que systemd reprenne le nouveau changement de répertoire?

Reed G. Law
la source
As-tu essayé systemctl daemon-reload? Pourrait déclencher une relecture du lien symbolique.
morloch
@morloch oui j'ai essayé ça. Le service que j'exécute est resque . Je me demande si le chemin est en quelque sorte stocké dans le travail lui-même.
Reed G. Law
3
Essayez d'ajouter ExecStartPre=/bin/pwd -Pà votre service, rechargez / redémarrez le service et consultez les journaux. Au moins alors vous saurez si c'est systemd ou resque ...
morloch
@morloch qui a fonctionné et maintenant, en quelque sorte, il trouve le bon répertoire.
Reed G. Law
J'ai eu le même problème. SystemD résoudra SymLink au chemin réel et l'utilisera. Je n'ai pas trouvé de moyen de désactiver ce comportement. J'ai maintenant simplement déplacé mes affaires vers la cible du lien symbolique et créé un nouveau lien dans l'autre sens ...
Martin Rauscher

Réponses:

2

Essayez éventuellement d'ajouter:

Environment = PWD=/srv/ctr/current

(BTW, vraiment heureux de voir quelqu'un d'autre utiliser /srv/*pour ses services.)

Duc
la source
Vieille question, mais je voulais dire que cela a fonctionné pour moi sur le systemd de Centos 8.1 alors que le commentaire de @ morloch ne l'a pas fait.
Yoopergeek
0

modifiez votre fichier d'unité systemd comme suit:

  • Répertoire de travail = / srv / ctr /
  • ExecStart = / bin / start current ou ExecStart = cd current && / bin / start
Ahmed Hamdy Hammad
la source