Einfachen Dienst mit systemd konfigurieren

Einfachen Dienst mit systemd konfigurieren

Wir verwenden den Bamboo-Server für die kontinuierliche Integration mit Remote-Agenten, die unsere Projekte erstellen. Diese Agenten können mit einem einfachen Shell-Skript gestartet werden (was gut funktioniert). Aber ich dachte, ich gehe noch einen Schritt weiter und mache eine systemdEinheit daraus, die den Agenten nach dem Booten automatisch startet und es den Benutzern ermöglicht, ihn über systemctlBefehle zu starten/stoppen. Das habe ich also versucht

[Unit]
Description=Atlassian Bamboo Agent
After=syslog.target network.target

[Service]
Type=forking
User=shub
Group=shub
ExecStart=/home/shub/bamboo-agent-home/bin/bamboo-agent.sh start
ExecStop=/home/shub/bamboo-agent-home/bin/bamboo-agent.sh stop

[Install]
WantedBy=multi-user.target

Das habe ich getan systemctl daemon-reload. Das Problem ist, dass der Agent nach dem Neustart nicht gestartet wird und sich außerdem seltsam verhält (in der Weise, dass der Dienst sich von Zeit zu Zeit neu startet oder danach nicht richtig hochfährt systemctl start). Was mache ich also falsch? Ich habe darüber nachgedacht, den Agenten so zu ändern, dass Typeer simpleals Hintergrunddienst ausgeführt wird (und das Skript selbst den Agenten nach der Ausführung im Hintergrund ausführt).

Antwort1

Sie haben mehrere Fragen gestellt. Ich beantworte die Frage: „Warum startet mein benutzerdefinierter systemd-Dienst nicht beim Booten?“

Die Antwort ist, weil Sie nichtermöglichtes. Wenn Sie ausführen systemctl enable my-service-name, [Install]wird der Block in Ihrer Unit-Datei bearbeitet.

In diesem Fall haben Sie systemd angewiesen, den Dienst als Teil der Erreichung des zu starten multi-user.target.

Durch Ausführen enabledes Befehls wird ein symbolischer Link erstellt /etc/systemd/system/multi-user.target.wants/und die Anwesenheit dieses symbolischen Links weist systemdden Dienst beim Booten an, diesen zu starten.

Ich schlage vor, Ihren Kommentar „verhält sich komisch“ in eine separate Frage umzuwandeln, in der mehr Einzelheiten bereitgestellt werden, möglicherweise mit Details aus dem Systemd-Journal darüber, was vor sich geht. (Überprüfen Sie journalctldie Ausgabe.)

verwandte Informationen