Откройте консоль Java при запуске в качестве службы
Так что у меня маленькая ситуация. Я запускаю приложение Java на сервере Ubuntu 14.04. В какой-то момент я решил использовать Screen и некоторые пользовательские сценарии супервизора для поддержания работы приложения. Процесс супервизора удостоверился, что приложение Java все еще работало, и перезапустил его, если оно не удалось, и Screen использовался, чтобы упростить подключение к консоли приложений Java, если мне потребуется взаимодействовать с CLI приложений. Короче говоря, это технически работало, но было не очень стабильно. Иногда Screen перестает работать или процесс супервизора завершается неудачей. У них обоих были проблемы. Я пережил эту конфигурацию в течение ряда лет. Наконец я решил пойти по другому пути.
В настоящее время (и примерно в прошлом году) приложение работает в качестве службы. Я полагаю, что он использует Upstart, поскольку systemd еще не был установлен по умолчанию на 14.04 LTS. Этот новый метод управления процессом работает как мечта. Запускать и останавливать Java-приложение очень просто, рассматривая его как службу. Кроме того, при загрузке сервера или сбое службы ОС прекрасно запускает / перезапускает. Так в чем проблема? Я больше не могу получить доступ к консоли Java при запуске приложения таким образом. Единственный способ получить доступ к консоли Java с помощью этого метода - закрыть службу, а затем вручную запустить приложение Java. Взаимодействуйте с консолью, чтобы внести необходимые изменения. Завершите работу приложения, а затем перезапустите службу. Вы можете видеть, как это не очень хорошее решение. Это решение прекрасно работает, если вам никогда не нужно взаимодействовать с консолью.
Я попытался запустить приложение Java на экране как сервис, используя Upstart, но, похоже, это не сработало. Итак, вот официальный вопрос:
Как я могу использовать Upstart для запуска приложения Java таким образом, чтобы после запуска службы я мог подключиться к серверу по SSH и с помощью какой-либо команды получить доступ к консоли JVM для выдачи команд CLI?
Вот некоторая информация с сервера, включая скрипт Upstart.
Спасибо
root@ALPHA:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.4 LTS
Release: 14.04
Codename: trusty
root@ALPHA:~# uname -r
3.19.0-65-generic
root@ALPHA:~# java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
# ALPHA START SCRIPT
start on runlevel [2345]
stop on runlevel [^2345]
console log
chdir /home/administrator/alpha
setuid administrator
setgid administrator
respawn
respawn limit 20 5
exec /usr/bin/java -Xms6G -Xmx12G -XX:PermSize=2G -jar alpha.jar nogui