Как создать службу на Ubuntu Upstart

18

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

    
задан mecek 30.09.2013 в 14:21
источник

2 ответа

35

Убедитесь, что вы находитесь на 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 .

    
ответ дан Rael Gugelmin Cunha 16.04.2014 в 12:01
источник
0

Вам нужно создать выскочку. Ссылка

Upstart - это (IMHO) катастрофа по сравнению с хорошими сценариями инициализации SysV. Upstart - это больше усилий с небольшим потенциалом к ​​добавленной работе. С учетом сказанного, я подозреваю, что там будет несколько выскочек-защитников, которые возьмут меня на задание для меня, заявив очевидное: -)

    
ответ дан Andrew 30.09.2013 в 14:35