Як створити службу на Ubuntu Upstart


21

У мене є виконана програма Java, яку я можу запустити, ввівши java -jar abc.jarтермінал. Як я можу це запустити як послугу? Я хочу запустити це як службу, як набравши текст service abc start.


Більш повна відповідь тут: unix.stackexchange.com/questions/1924/… В основному, в Ubuntu ви можете створити сценарій для /etc/init.d, який може запустити / зупинити / перезапустити вашу послугу.
Містер Ед

Відповіді:


41

Переконайтеся, що ви 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розділом.


1
Можливо, вам потрібно зробити його виконуваним за допомогою sudo chmod +x /etc/init.d/myprogram. ПОПЕРЕДЖЕННЯ. Ваш метод відповіді не працює в Ubuntu 16.04!
juliocesar

2
@juliocesar 16.04 використовує systemd, а не Upstart.
Раель Гугельмін Кунья

start onне є необхідною строфою. Як ви можете прочитати тут : Таку роботу може контролювати лише адміністратор .
SuB

@SuB таїть, але тоді робота не почнеться автоматично, і було зрозуміло, що автор запитання хоче щось, що діє, як послуга, тобто, починається автоматично.
Раель Гугельмін Кунья

Так. Я знаю. щойно додав коментар, щоб завершити свою відповідь.
SuB

0

Потрібно створити випуск. http://upstart.ubuntu.com/getting-started.html

Upstart - це (IMHO) катастрофа порівняно з хорошими сценаріями inl inSysV. Наверх - це FAR більше зусиль з невеликим перевершенням до додаткової роботи. Зважаючи на це, я підозрюю, що там буде кілька захисників, які змусять мене виконати завдання, заявляючи про очевидне ;-)


1
Це просто файл у /etc/init/yourservice.conf з рядком, який вказує, коли слід запустити, та іншим до команди exec. Fedora також використовує новітній старт. Крім того, навіть Debian змінює свою стартову схему на SystemD, що в майбутньому буде схемою Ubuntu.
Раель Гугельмін Кунья
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.