Mam program wykonywalny Java, który mogę uruchomić, wpisując java -jar abc.jar
terminal. Jak mogę uruchomić to jako usługę? Chcę uruchomić go jako usługę, na przykład pisząc service abc start
.
Mam program wykonywalny Java, który mogę uruchomić, wpisując java -jar abc.jar
terminal. Jak mogę uruchomić to jako usługę? Chcę uruchomić go jako usługę, na przykład pisząc service abc start
.
Odpowiedzi:
Upewnij się, że masz 14.04. Ubuntu 16.04 (i nowsze wersje) używa systemd, a nie Upstart.
Skrypt Upstart to plik skryptu umieszczony w /etc/init/
i kończący się na .conf
.
Wymaga 2 sekcji: jednej wskazującej, kiedy rozpocząć, a drugiej z poleceniem wykonania.
Najłatwiejszy skrypt na początek z próbką to:
# myprogram.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program
Utworzono jako root pod /etc/init/myprogram.conf
.
Jeśli twój skrypt wymaga więcej niż jednego wiersza poleceń, użyj script
sekcji zamiast exec
wiersza:
# myprogram.conf
start on filesystem
script
/usr/bin/java -jar /path_to/program
echo "Another command"
end script
Aby włączyć uzupełnianie bash dla usługi, dodaj dowiązanie symboliczne do /etc/init.d
folderu:
sudo ln -s /etc/init/myprogram.conf /etc/init.d/myprogram
Następnie spróbuj go uruchomić i zatrzymać:
sudo service myprogram start
Zgodnie z nową książką kucharską możesz tworzyć polecenia pre-start
/ post-start
i pre-stop
/ post-stop
, które mają być wykonane.
Ponadto czytam, że chcesz sprawdzić, czy proces jest uruchomiony. Sprawdź to pytanie i może skorzystaj z pre-start
sekcji.
sudo chmod +x /etc/init.d/myprogram
. UWAGA: Twoja odpowiedź nie działa w Ubuntu 16.04!
Musisz stworzyć upstart. http://upstart.ubuntu.com/getting-started.html
Upstart to (IMHO) katastrofa w porównaniu do dobrych starych skryptów inicjujących SysV. Upstart to O wiele większy wysiłek przy niewielkim pozytywnym wpływie na dodatkową pracę. Powiedziawszy to, podejrzewam, że będzie kilku nowych obrońców, którzy zabiorą mnie do zadania, stwierdzając oczywiste ;-)