Dienst bricht mit status=203/EXEC ab
Unter Linux lässt sich der Relution Dienst nicht starten und über systemctl status relution werden diese Fehler ausgegeben:
Apr 12 12:02:52 Relution systemd[1]: Started Relution Server.
Apr 12 12:02:52 Relution systemd[1]: relution.service: Main process exited, code=exited, status=203/EXEC
Apr 12 12:02:52 Relution systemd[1]: relution.service: Failed with result 'exit-code'.
Apr 12 12:02:52 Relution systemd[1]: relution.service: Service RestartSec=100ms expired, scheduling restart.
Apr 12 12:02:52 Relution systemd[1]: relution.service: Scheduled restart job, restart counter is at 1.
Apr 12 12:02:52 Relution systemd[1]: Stopped Relution Server
Relution lässt sich zudem über die relution-foreground.sh ganz normal starten und funktioniert wie gewohnt. Der Test erfolgt als Benutzer relution im Installationsverzeichnis, da das Startskript als root abbricht:
cd /opt/relution
sudo -u relution JAVA_HOME=/usr bin/relution-foreground.sh
Der Exit-Code 203/EXEC bedeutet, dass systemd das Startskript nicht direkt ausführen kann. Eine mögliche Ursache ist ein falscher SELinux-Kontext, etwa wenn das Relution-Verzeichnis außerhalb von /opt entpackt und dann verschoben wurde. Ebenfalls möglich sind fehlende Ausführungsrechte für die Skripte im Verzeichnis bin.
Ursache beheben
Der SELinux-Kontext und die Ausführungsrechte lassen sich mit den folgenden Befehlen korrigieren:
sudo restorecon -Rv /opt/relution
sudo chmod 755 /opt/relution/bin/*.sh
Anschließend wird der Dienst mit sudo systemctl restart relution erneut gestartet.
Relution-Service-Datei anpassen
Alternativ lässt sich das Skript über die Bash starten. Hierzu wird in der Service-Datei relution.service eine kleine Anpassung vorgenommen: In der Zeile ExecStart der Datei /etc/systemd/system/relution.service wird /bin/bash vorangestellt.
ExecStart=/bin/bash /opt/relution/bin/relution-foreground.sh
Anschließend werden systemd neu geladen und der Dienst neu gestartet:
sudo systemctl daemon-reload
sudo systemctl restart relution
Weitere Startfehler
Bricht das Startskript selbst ab, endet der Dienst nicht mit 203/EXEC, sondern mit dem Exit-Status 1. Die Ursache steht dann im Journal, das sich mit journalctl -u relution anzeigen lässt, z. B. This script must not be run as root. bei einem Start als root oder eine Meldung zur Java-Version (Relution requires Java Version …).