У меня есть исполняемая программа на Java, которую я могу запустить, набрав java -jar abc.jar
в терминале. Как я могу запустить его как сервис? Я хочу запустить его как службу, набрав service abc start
.
Удостоверьтесь, что Вы находитесь на 14,04. Ubuntu 16.04 (и выше) использует systemd, не Выскочку.
Новомодный сценарий является файлом сценария, помещенным в /etc/init/
и окончание в .conf
.
Требуется 2 раздела: один для указания, когда запустить, и другой с командой для выполнения.
Самый легкий сценарий для запуска с образца:
# myprogram.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program
Созданный как корень под /etc/init/myprogram.conf
.
Если Ваш сценарий требует больше чем одной командной строки, используйте script
раздел вместо exec
строка:
# myprogram.conf
start on filesystem
script
/usr/bin/java -jar /path_to/program
echo "Another command"
end script
Для включения завершения удара для сервиса добавьте символьную ссылку в /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
раздел.
Вам нужно создать выскочку. http://upstart.ubuntu.com/getting-started.html
Upstart - это (IMHO) катастрофа по сравнению с хорошими сценариями инициализации SysV. Upstart НАМНОГО больше усилий с небольшим потенциалом для дополнительной работы. С учетом вышесказанного, я подозреваю, что там будет несколько выскочка защитников, которые возьмут меня на себя, чтобы сформулировать очевидное; -)