Você não precisa usar nohup
desde quando o Upstart executa um programa, esse processo não será associado a um terminal (por padrão).
Para o Upstart, sugiro que você tenha apenas a ligação do trabalho:
exec java -classpath blah MyClass
... ou garantindo que /path/to/myjavastartscript.sh ligue:
exec java -classpath blah MyClass
Observe que o primeiro exec
acima é uma sub-rotina Upstart, enquanto o segundo é uma palavra-chave do shell.
Se o seu script de shell não chamar a versão do shell de exec
, você precisará ter cuidado para garantir que você defina a sub-rotina Upstart expect
corretamente - veja .
Em relação à interrupção do serviço, o Upstart automaticamente mata o processo que está rastreando (o processo principal da JVM associado a MyClass
) e quaisquer filhos desse processo (tecnicamente qualquer processo no mesmo grupo de processos (ver link ).
Sem mais detalhes, não tenho certeza se sua condição start on
é adequada - presumivelmente, você deseja que o trabalho do MyClass seja iniciado se, e somente se, um arquivo de configuração tiver sido configurado? Nesse caso, o idioma padrão é que as tarefas pre-start
stanza leiam em /etc/default/MyClass.conf
. Se ele decidir que o arquivo não existe ou o arquivo de configuração de alguma forma indica que o serviço está desabilitado / não está configurado corretamente, o pre-start
pode simplesmente chamar stop
para interromper o trabalho de (totalmente) iniciar (consulte < href="http://upstart.ubuntu.com/cookbook/#pre-start"> link . A vantagem dessa abordagem é que sua condição start on
pode ser configurada com segurança para qualquer conjunto de condições que deve fazer com que a tarefa seja iniciada. Quando essas condições forem atendidas, o Upstart executará o trabalho; o pré-início será executado, determine que a configuração ainda não é válida e simplesmente saia. No dia em que o administrador decidir configurar o serviço, o trabalho será iniciado totalmente.
Veja o link e link para determinar a condição start on
.
Note finalmente que você deve sempre especificar uma condição stop on
também. Veja o link .