2017-11-22 5 views
0

Meine systemd Unit-Datei sieht wie folgt ausSystemd Reload dieses Recht ich zu realisieren etwas

start() { 
    java -jar server.jar & 
} 
reload() { 
    #do some application specific reload stuff 
    start 
} 

getötet wird, wenn der systemd Anruf beendet neu zu laden, wird der Prozess java -jar läuft, ist tatsächlich tot. Systemd scheint zu denken, dass mein Nachladeprozess erledigt ist und tötet ihn. Gibt es eine Möglichkeit, dieses Prozess-Tötungsverhalten zu konfigurieren und abzubrechen? Ich habe versucht, den Prozess zu verleugnen und mit KillMode=blah und Type=blah in der Servicedatei, aber kein Ergebnis durcheinander zu bringen.

Laufen auf CentOS 7.4

Antwort

0

Ich weiß nicht, ob ich Ihre Frage verstanden, wollen Sie die systemd Unit-Datei server.jar für die Ausführung, nicht wahr? Versuchen Sie es mit folgenden Sequenzen.

Zuerst erstellen Sie Ihre Blah Service Unit-Datei.

# vim /etc/systemd/system/blah.service 

[Unit] 
Description=blah service 
After=network.target 
Requires=network.target 

[Service] 
Type=simple 
EnvironmentFile=/etc/sysconfig/blah 
ExecStart=/usr/bin/java -jar server.jar 
Restart=always 
User=blah_USERNAME 

[Install] 
WantedBy=multi-user.target 

Und laden Sie die Blah-Service-Unit-Datei neu.

# systemctl daemon-reload 

Testen Sie es!

# systemctl start blah 
# systemctl status blah 
# systemctl restart blah 
# systemctl status blah 

Ich hoffe, das wird Ihnen helfen.

+0

So habe ich bereits die Systemd Unit-Datei. Aber wenn ich reload() aufrufe, lebt der Prozess nur so lange, wie das Nachladen ausgeführt wird. Wenn ich zum Beispiel in der Reload-Funktion "Schlaf 10" einstelle, werden zwei Instanzen des Servers zehn Sekunden lang ausgeführt. Dann ist die Reload-Funktion fertig und das Glas wird getötet ... was ich nicht will –