У мене є виконана програма Java, яку я можу запустити, ввівши java -jar abc.jar
термінал. Як я можу це запустити як послугу? Я хочу запустити це як службу, як набравши текст service abc start
.
У мене є виконана програма Java, яку я можу запустити, ввівши java -jar abc.jar
термінал. Як я можу це запустити як послугу? Я хочу запустити це як службу, як набравши текст service abc start
.
Відповіді:
Переконайтеся, що ви 14.04. Ubuntu 16.04 (і вище) використовує systemd, а не Upstart.
Сценарій Upstart - це файл скриптів, розміщений у /etc/init/
і закінчується в .conf
.
Потрібно 2 розділи: в одному вказати, коли слід запустити, а в іншому із командою для виконання.
Найпростіший сценарій для початку зразка:
# myprogram.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program
Створено як root під /etc/init/myprogram.conf
.
Якщо ваш сценарій вимагає більше одного командного рядка, використовуйте script
розділ замість exec
рядка:
# myprogram.conf
start on filesystem
script
/usr/bin/java -jar /path_to/program
echo "Another command"
end script
Щоб увімкнути завершення bash для вашої послуги, додайте символьну посилання в /etc/init.d
папку:
sudo ln -s /etc/init/myprogram.conf /etc/init.d/myprogram
Потім спробуйте почати та зупинити:
sudo service myprogram start
Згідно з початковою кулінарною книгою , ви можете створювати pre-start
/ post-start
та pre-stop
/ post-stop
команди, які потрібно виконати.
Крім того, я читаю, що ви хочете перевірити, чи працює процес. Перевірте це питання і, можливо, скористайтеся pre-start
розділом.
sudo chmod +x /etc/init.d/myprogram
. ПОПЕРЕДЖЕННЯ. Ваш метод відповіді не працює в Ubuntu 16.04!
Потрібно створити випуск. http://upstart.ubuntu.com/getting-started.html
Upstart - це (IMHO) катастрофа порівняно з хорошими сценаріями inl inSysV. Наверх - це FAR більше зусиль з невеликим перевершенням до додаткової роботи. Зважаючи на це, я підозрюю, що там буде кілька захисників, які змусять мене виконати завдання, заявляючи про очевидне ;-)