O iniciante não está vendo meu novo script

27

Adicionei um novo script /etc/init/chamado chamado minecraft.confque contém o script:

start on startup
stop on shutdown
respawn
respawn limit 20 5

script
  export HOME="/root"
  exec /root/minecraft/start.sh 2>&1 >> /var/log/minecraft.log
end script

post-start script
   echo "minecraft started"

Quando tento start minecraft, recebo o erro:start: Unknown job: minecraft

Eu tentei correr initctl liste meu trabalho no minecraft não está listado. Eu tentei correr initctl reload-configuratione não faz nenhuma diferença.

Outros trabalhos listados por initctl listfuncionam bem com iniciar, parar e reiniciar.

Por que o iniciante não vê meu novo script?

Jasarien
fonte
Esta pode ser uma pergunta estúpida, mas ... não deve ser o seu roteiro /etc/init.d/?
Wolfer
@ snow obrigado, mas eu já li isso e ainda tenho o problema.
Jasarien
O @Wolfer, de acordo com o guia de introdução inicial, diz " /etc/initQuando estiver feliz, coloque os arquivos e agora você está pronto para reiniciar e usar o inicializador".
Jasarien
Eu tentei reproduzir o problema, mas sem sucesso. Copiei colei seu código no /etc/init/minecraft.conf e o emiti sudo start minecraftsem problemas. Aqui está o conteúdo do arquivo de log ~$ sudo cat /var/log/upstart/minecraft.log minecraft started /proc/self/fd/9: 3: exec: /root/minecraft/start.sh: not found minecraft startedVocê pode fornecer mais detalhes sobre a versão do Ubuntu que você está usando e qualquer informação útil do syslog?
Goran Miskovic

Respostas:

12

Verifique os logs iniciais (está dentro /var/log/syslog) enquanto recarrega a configuração usando initctl reload-configuration. Se houver um erro de sintaxe, ele será exibido lá. Geralmente, é por isso que você não pode usar sua nova configuração inicial.

rcomblen
fonte
11

Uma maneira fácil de verificar sua sintaxe de script é com o seguinte comando:

init-checkconf -d /etc/init/service_name.conf

Descobri que, mesmo com um arquivo Upstart válido, se o arquivo não existisse quando o servidor foi inicializado pela última vez, preciso reiniciar o servidor para que o Upstart o veja.

Mike Bethany
fonte
9

Eu me sinto meio idiota ... Mas aqui está:

Perdi a estrofe "script final" desde o final do script inicial ...

post-start script
   echo "minecraft started"

deveria ter ficado

post-start script
   echo "minecraft started"
end script

Mas não sei por que funcionou para @schkovich sem o end script...

Jasarien
fonte
2
Porque eu adicionei a estrofe do script final. Conclusão automática de código (mental) incorporada. :(
Goran Miskovic
Eu atingi o mesmo problema, mas irritantemente, nada aparece em / var / log e initctl reload-configuration --verbose está silencioso.
Neil McGill
4

No meu caso, era um authorcampo vazio , assim:

author ""

Funcionou apenas depois de adicionar algo entre aspas.

# initctl reload-configuration

também estava lançando /etc/init/servicename.conf:2: Expected token no syslog em vez de stdout . Muito ocupado para registrar um relatório de bug para um pacote que está morrendo.

int_ua
fonte
3

Talvez não seja aplicável a isso especificamente, mas vale a pena mencionar: Se você editar um arquivo de configuração do Upstart para um serviço em execução, a execução restartNÃO recarregará a configuração. Você precisa executar stope startque novas alterações entrem em vigor.

http://upstart.ubuntu.com/cookbook/#restart

Kristi
fonte