2016-01-05 8 views
5

Ich habe einen Systemd-Dienst erstellt, der beim Start oder beim Neustart ein Shell-Skript aufrufen sollte.Warum stoppt Systemd sofort nach dem Start?

[Unit] 
Description=Starts the DCCA index software 

[Install] 
WantedBy=multi-user.target 

[Service] 
ExecStart=/opt/insiteone/bin/indexControl start 
ExecStop=/opt/insiteone/bin/indexControl stop 

# Execute pre and post scripts as root 
#PermissionsStartOnly=true 
Restart=on-abort 
TimeoutSec=600 

Anfangs hielt sie so schnell in Endlosschleife auf einen Neustart, da es gestartet wird, aber wenn ich die TimeoutSec Option hinzugefügt, es rief die ExecStop, sobald der Dienst zum ersten Mal gestartet wurde (gestartet, und dann sofort wieder gestoppt).

Irgendwelche Hinweise, wo ich falsch liege? P.S: indexControl ist ein Shell-Skript, das andere Prozesse startet.

+0

'chkconfig Index off' ist keine Hilfe als auch (index.service ist die ssystemd Service-Datei) – kingsmasher1

+0

ich hier die Antwort bekam: http://superuser.com/questions/1022142/why-is-systemd-stopping -service-sofort-nach-es-ist-gestartet, was das Problem behoben – kingsmasher1

Antwort

3

Versuchen Sie, Restart=on-abort-Restart=on-abnormal

Von http://www.freedesktop.org/software/systemd/man/systemd.service.html:

Sie diese Option auf on-Versagen ist die empfohlene Wahl für lang laufende Dienste, um die Zuverlässigkeit zu erhöhen, indem die automatische Versuch Erholung von Fehler. Für Dienste, die auf ihre eigene Wahl beenden können (und vermeiden Sie sofortigen Neustart), on-abnormal ist eine Alternative.

Sie können auch Type=oneshot in den Abschnitt [Service] hinzufügen.

Von https://wiki.archlinux.org/index.php/Systemd#Service_types:

Type = oneshot: dies für Skripte nützlich ist, die einen einzelnen Job und dann Ausfahrt. Möglicherweise möchten Sie auch RemainAfterExit = yes setzen, damit systemd den Service nach dem Beenden des Prozesses weiterhin als aktiv betrachtet.

Sie können meine empfohlenen Änderungen unten ein:

[Unit] 
Description=Starts the DCCA index software 

[Install] 
WantedBy=multi-user.target 

[Service] 
Type=oneshot 
ExecStart=/opt/insiteone/bin/indexControl start 
ExecStop=/opt/insiteone/bin/indexControl stop 
Restart=on-abnormal 

Etwas anderes ist zu prüfen, ob Sie auch die Linie Restart= brauchen ... Hat oft nicht das Skript diese Servicedatei Anrufe?

+5

Danke für Ihre Antwort, aber 'type = oneshot' funktioniert nicht, aber' type = forking' tut. Ich habe die Antwort von hier, was funktioniert. http://superuser.com/questions/1022142/why-is-systemd-stopping-service-immediately-after-it-is-started/ – kingsmasher1

+0

Mit RemainAfterExit = yes und Type = oneshot vielleicht arbeiten – AkisC

+1

Kann nicht 'Restart = on "abnormal" bei ** oneshot ** -Dienstleistungen, nur "Neustart = nein" ist erlaubt: 'Dienst hat Neustart = Einstellung anders als nein, was für Type = oneshot-Dienste nicht erlaubt ist. Verweigerung – s1moner3d

Verwandte Themen