Então eu tenho uma pequena situação. Estou executando um aplicativo Java em um servidor Ubuntu 14.04. Em um ponto, optei por usar o Screen e alguns scripts de supervisor personalizados para manter o aplicativo em execução. O processo de supervisor certificou-se de que o aplicativo Java ainda estava em execução e o reiniciou se ele falhou e a Tela foi usada para facilitar a conexão de volta ao console de aplicativos Java, caso eu precise interagir com a CLI de aplicativos. Para encurtar a história, isso funcionou tecnicamente, mas não foi muito estável. Ocasionalmente, a tela pararia de funcionar ou o processo do supervisor falharia. Ambos tiveram problemas. Eu suportei essa configuração por vários anos. Finalmente, decidi seguir um caminho diferente.
Atualmente (e por volta do ano passado), o aplicativo está sendo executado como um serviço. Eu acredito que ele esteja usando o Upstart, já que o systemd não foi implementado como padrão na versão 14.04 LTS. Esse novo método de controle de processo funciona como um sonho que se torna realidade. É muito fácil iniciar e parar o aplicativo Java tratando-o como um serviço. Além disso, quando o servidor inicializa ou se o serviço falha, o sistema operacional lida bem com o início / reinício. Então qual é o problema? Eu não consigo mais acessar o console Java ao iniciar o aplicativo dessa maneira. A única maneira de obter acesso ao console Java usando esse método é encerrar o serviço e, em seguida, iniciar manualmente o aplicativo Java. Interaja com o console para fazer as alterações necessárias. Desligue o aplicativo e reinicie o serviço. Você pode ver como isso não é uma boa solução. Essa solução funciona muito bem se você nunca precisar interagir com o console.
Eu tentei iniciar o aplicativo Java dentro da tela como um serviço usando o Upstart, mas isso não parece funcionar. Então aqui está a pergunta oficial:
Como posso usar o Upstart para iniciar o Aplicativo Java de forma que, quando o serviço estiver em execução, eu possa executar SSH no servidor e usar algum comando para acessar o console da JVM para emitir comandos CLI?
Aqui estão algumas informações do servidor, incluindo o script Upstart.
Obrigado
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