Symlink als Arbeitsverzeichnis im systemd-Dienst

8

Ich habe einen Dienst, mit WorkingDirectory=/srv/ctr/currentdem ein Symlink ist.

Es scheint, dass der Dienst beim Neustart keine Änderungen im Symlink aufnimmt. Das Fehlerprotokoll gibt /srv/ctr/releases/69den Speicherort an, /srv/ctr/currentzeigt jedoch auf /srv/ctr/releases/72. Gibt es eine Möglichkeit, systemd dazu zu bringen, den neuen Verzeichniswechsel zu übernehmen?

Reed G. Law
quelle
Hast du es versucht systemctl daemon-reload? Könnte ein erneutes Lesen des Symlinks auslösen.
Morloch
@morloch ja das habe ich versucht. Der Dienst, den ich ausführe , ist resque . Ich frage mich, ob der Pfad irgendwie im Job selbst gespeichert ist.
Reed G. Law
3
Versuchen Sie ExecStartPre=/bin/pwd -P, Ihren Dienst zu erweitern, den Dienst neu zu laden / neu zu starten und die Protokolle zu überprüfen. Zumindest wissen Sie dann, ob es systemd oder resque ist ...
morloch
@morloch das hat funktioniert und jetzt findet es irgendwie das richtige Verzeichnis.
Reed G. Law
Ich hatte das gleiche Problem. SystemD löst den SymLink in den tatsächlichen Pfad auf und verwendet diesen. Ich habe keine Möglichkeit gefunden, dieses Verhalten zu deaktivieren. Ich habe jetzt einfach meine Sachen auf das Symlink-Ziel verschoben und einen neuen Link in die andere Richtung erstellt ...
Martin Rauscher

Antworten:

2

Versuchen Sie möglicherweise hinzuzufügen:

Environment = PWD=/srv/ctr/current

(Übrigens, ich freue mich sehr, dass jemand anderes /srv/*für seine Dienste verwendet wird.)

Herzog
quelle
Alte Frage, aber ich wollte sagen, dass dies für mich auf Centos 8.1s System funktioniert hat, während @ morlochs Kommentar dies nicht tat.
Yoopergeek
0

Ändern Sie Ihre systemd-Einheitendatei wie folgt:

  • Arbeitsverzeichnis = / srv / ctr /
  • ExecStart = / bin / start current oder ExecStart = cd current && / bin / start
Ahmed Hamdy Hammad
quelle