Teamcity startet nicht, wenn es als Dienst ausgeführt wird, aber der eigentliche Befehl funktioniert einwandfrei

Teamcity startet nicht, wenn es als Dienst ausgeführt wird, aber der eigentliche Befehl funktioniert einwandfrei

Ich versuche, Teamcity als Heimserver einzurichten, aber ich kriege den Dienst nicht zum Laufen. Das ist auf Ubuntu 16.04.

Ich habe die Anweisungen befolgtHierbis zumInstallieren und Konfigurieren der DatenbankTeil. (Außer dass ich einfach /opt/Teamcity anstelle von /opt/jetbrains/Teamcity verwende)

Wenn ich jetzt versuche, den Dienst auszuführen, erhalte ich Folgendes

sudo service teamcity start 
Job for teamcity.service failed because the control process exited with error code. See "systemctl status teamcity.service" and "journalctl -xe" for details.

Wenn ich jedoch den eigentlichen Befehl im Skript ausführe

sudo start-stop-daemon --start -c teamcity  --exec  /opt/TeamCity/bin/runAll.sh start

Es funktioniert gut. Irgendwelche Ideen?

BEARBEITEN

Hier ist die Ausgabe vonjournalctl -xe

Oct 13 23:15:59 Home-Server sudo[8224]:     ryan : TTY=pts/8 ; PWD=/opt/TeamCity/bin ; USER=root ; COMMAND=/usr/sbin/service teamcity start
Oct 13 23:15:59 Home-Server sudo[8224]: pam_unix(sudo:session): session opened for user root by ryan(uid=0)
Oct 13 23:15:59 Home-Server systemd[1]: Starting teamcity.service...
-- Subject: Unit teamcity.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit teamcity.service has begun starting up.
Oct 13 23:15:59 Home-Server systemd[8256]: teamcity.service: Failed at step EXEC spawning /etc/init.d/teamcity: Exec format error
-- Subject: Process /etc/init.d/teamcity could not be executed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- The process /etc/init.d/teamcity could not be executed and failed.
-- 
-- The error number returned by this process is 8.
Oct 13 23:15:59 Home-Server systemd[1]: teamcity.service: Control process exited, code=exited status=203
Oct 13 23:15:59 Home-Server systemd[1]: Failed to start teamcity.service.
-- Subject: Unit teamcity.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit teamcity.service has failed.
-- 
-- The result is failed.
Oct 13 23:15:59 Home-Server systemd[1]: teamcity.service: Unit entered failed state.
Oct 13 23:15:59 Home-Server systemd[1]: teamcity.service: Failed with result 'exit-code'.
Oct 13 23:15:59 Home-Server sudo[8224]: pam_unix(sudo:session): session closed for user root

Antwort1

Okt 13 23:15:59 Home-Server systemd[8256]: teamcity.service: Fehler beim Schritt EXEC, der /etc/init.d/teamcity erzeugt: Exec-Formatfehler
-- Betreff: Prozess /etc/init.d/teamcity konnte nicht ausgeführt werden

… was Ihnen genau sagt, wo das Problem liegt. Ihre Datei ist kein ausführbares Skript. Sie hat auch nicht die richtige Form, die in der rcDebian-Richtlinie für alte Van-Smoorenburg-Skripte vorgeschrieben ist, und es fehlen sogar die alten RedHat/SuSE-Header für Van-Smoorenburg- rcSkripte, ganz zu schweigen von den LSB-Headern, die vor Jahren für Debian obligatorisch wurden.

Aber es ist auch Zeitverschwendung, das Problem zu beheben. Werfen Sie es weg. Verwenden Sie eine systemd-Serviceeinheit.

Sie verwenden einen Mechanismus, derzweimalwurde unter Ubuntu einmal durch Upstart und dann erneut durch systemd ersetzt.

Wir schreiben jetzt das Jahr 2016 und die erste Regel für die Migration zu systemd gilt. Sie sollten jedoch die vielen Leute in den letzten Jahren ignorieren (wie z. B.Ben WhiteheadUnddiese namenlose Person), der Sie dazu veranlassen würde, einen weiteren Kandidaten für das systemd-Haus des Grauens zu erstellen. Nichtpacken Sie einen schlecht in Shell-Skript geschriebenen Poor Man's Dæmon Supervisor in eine systemd-Einheit ein.

[Einheit]
Beschreibung=TeamCity
Dokumentation=https://unix.stackexchange.com/a/316369/5132

[Service]
Typ=einfach
Benutzer=teamcity
Umgebung=TEAMCITY_DATA_PATH=/opt/jetbrains/TeamCity/.BuildServer
Umgebung=TEAMCITY_SERVER_OPTS=-Djava.awt.headless=true
ExecStart=/opt/jetbrains/TeamCity/bin/runAll.sh ausführen

[Installieren]
WantedBy=Mehrbenutzer.Ziel

Weiterführende Literatur

verwandte Informationen