Mam program wykonywalny Java, który mogę uruchomić, wpisując java -jar abc.jarterminal. Jak mogę uruchomić to jako usługę? Chcę uruchomić go jako usługę, na przykład pisząc service abc start.
Pełniejsza odpowiedź znajduje się tutaj: unix.stackexchange.com/questions/1924/… Zasadniczo w Ubuntu możesz utworzyć skrypt dla /etc/init.d, który może uruchomić / zatrzymać / zrestartować twoją usługę.
Pan Ed
Odpowiedzi:
41
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 scriptsekcji zamiast execwiersza:
# 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.dfolderu:
Być może potrzebujesz zrobić to za pomocą sudo chmod +x /etc/init.d/myprogram. UWAGA: Twoja odpowiedź nie działa w Ubuntu 16.04!
juliocesar
2
@juliocesar 16.04 używa systemd, a nie Upstart.
Rael Gugelmin Cunha
start onnie jest konieczną zwrotką. Jak możesz przeczytać tutaj : takim zadaniem może być kontrolowany tylko przez administratora .
SuB
@SuB tak, ale wtedy zadanie nie rozpocznie się automatycznie i było jasne, że autor pytania chce czegoś, co działa jak usługa, tj. Zaczyna się automatycznie.
Rael Gugelmin Cunha,
Tak. Wiem. właśnie dodał komentarz, aby uzupełnić odpowiedź.
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 ;-)
Jest to po prostu plik w pliku /etc/init/yourservice.conf z linią wskazującą, kiedy należy rozpocząć, a drugą do komendy exec. Fedora również używa upstart. Dodatkowo, nawet Debian zmienia swój schemat początkowy na SystemD, który będzie schematem Ubuntu w przyszłości.
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:
Utworzono jako root pod
/etc/init/myprogram.conf
.Jeśli twój skrypt wymaga więcej niż jednego wiersza poleceń, użyj
script
sekcji zamiastexec
wiersza:Aby włączyć uzupełnianie bash dla usługi, dodaj dowiązanie symboliczne do
/etc/init.d
folderu:Następnie spróbuj go uruchomić i zatrzymać:
Zgodnie z nową książką kucharską możesz tworzyć polecenia
pre-start
/post-start
ipre-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.źródło
sudo chmod +x /etc/init.d/myprogram
. UWAGA: Twoja odpowiedź nie działa w Ubuntu 16.04!start on
nie jest konieczną zwrotką. Jak możesz przeczytać tutaj : takim zadaniem może być kontrolowany tylko przez administratora .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 ;-)
źródło