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 .