Ich habe ein ausführbares Java-Programm, das ich durch Eingeben java -jar abc.jar
des Terminals ausführen kann . Wie kann ich es als Dienst ausführen? Ich möchte es als Dienst ausführen, indem ich tippe service abc start
.
Ich habe ein ausführbares Java-Programm, das ich durch Eingeben java -jar abc.jar
des Terminals ausführen kann . Wie kann ich es als Dienst ausführen? Ich möchte es als Dienst ausführen, indem ich tippe service abc start
.
Antworten:
Stellen Sie sicher, dass Sie am 14.04. Ubuntu 16.04 (und höher) verwendet systemd und nicht Upstart.
Ein Upstart-Skript ist eine Skriptdatei, die unter /etc/init/
und mit der Endung platziert wird .conf
.
Es sind zwei Abschnitte erforderlich: einer zum Anzeigen des Startzeitpunkts und der andere mit dem auszuführenden Befehl.
Das einfachste Skript, um mit Ihrem Beispiel zu beginnen, ist:
# myprogram.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program
Erstellt als root unter /etc/init/myprogram.conf
.
Wenn für Ihr Skript mehr als eine Befehlszeile erforderlich ist, verwenden Sie den script
Abschnitt anstelle der exec
Zeile:
# myprogram.conf
start on filesystem
script
/usr/bin/java -jar /path_to/program
echo "Another command"
end script
Fügen Sie einen Symlink in den /etc/init.d
Ordner ein, um die Bash-Vervollständigung für Ihren Dienst zu aktivieren :
sudo ln -s /etc/init/myprogram.conf /etc/init.d/myprogram
Dann versuchen Sie es zu starten und zu stoppen:
sudo service myprogram start
Entsprechend dem Upstart-Kochbuch können Sie pre-start
/ post-start
und pre-stop
/ post-stop
Befehle erstellen , die ausgeführt werden sollen.
Außerdem habe ich gelesen, dass Sie überprüfen möchten, ob ein Prozess ausgeführt wird. Überprüfen Sie diese Frage und verwenden Sie möglicherweise den pre-start
Abschnitt.
sudo chmod +x /etc/init.d/myprogram
. ACHTUNG: Ihre beantwortete Methode funktioniert nicht in Ubuntu 16.04!
Sie müssen einen Emporkömmling erstellen. http://upstart.ubuntu.com/getting-started.html
Upstart ist (IMHO) eine Katastrophe im Vergleich zu guten alten SysV-Init-Skripten. Emporkömmling ist weitaus mehr Aufwand mit wenig Vorteil für die hinzugefügte Arbeit. Ich vermute, dass es da draußen ein paar aufrührerische Verteidiger geben wird, die mich dazu bringen, das Offensichtliche zu sagen ;-)