Jak stworzyć usługę na Ubuntu Upstart


21

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:

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-starti 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-startsekcji.


1
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ź.
SuB

0

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 ;-)


1
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.
Rael Gugelmin Cunha
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.