Upstart, uma definição de job para iniciar e outra para parar

7

Oi, acabei de descobrir o upstart do ubuntu (scripts etc / init / *). E eu gostaria de usá-lo para executar um aplicativo específico. Este aplicativo é executado através de uma linha de comando, mas há um argumento para iniciar uma instância do aplicativo e outro argumento para pará-lo (vamos dizer 'start' e 'stop') Existe uma maneira de usar o upstart para isso?

    
por benzen 24.01.2011 / 23:11

3 respostas

7

Deve ser tão simples quanto criar um arquivo /etc/init/myjob.conf :

description    "My Job"

# start conditions for automatic start
# stop conditions for automatic stop

pre-start exec /path/to/program start
post-stop exec /path/to/program stop

Você deve ser capaz de fazer sudo start myjob para iniciar e sudo stop myjob para parar.

Veja o link para mais informações.

    
por htorque 24.01.2011 / 23:37
1

Se tudo o que você quer fazer é iniciar / parar o serviço no momento da inicialização ... depois solte seu script em /etc/init.d e execute

update-rc.d yourscript defaults

Ou se reclamar

update-rc.d yourscript start 20 2
update-rc.d yourscript stop 20 0
update-rc.d yourscript stop 20 1
update-rc.d yourscript stop 20 6

Ambos irão adicioná-lo ao bootup / shutdown.

Note que isso significa que ele será executado como root ... então você pode querer certificar-se de que o script troque os usuários para o seu usuário ou outro que você queira que este programa execute como.

O Upstart destina-se a substituir esses scripts, se possível. As motivações para isso são inicialização mais rápida e uma codificação mais clara das informações necessárias para saber quando iniciar / interromper um serviço. Ele consegue a inicialização mais rápida especificamente, tendo apenas que ler o conteúdo de / etc / init para começar, o que é especialmente vantajoso quando você adiciona ureadahead ao processo de boot, já que os arquivos de script minúsculos menos aleatórios têm que armazenar em cache, pode gastar tempo em coisas importantes como bibliotecas e programas necessários para iniciar o sistema.

Eu aposto que o script que você está executando faz algumas coisas para configurar o ambiente e, em seguida, executa o programa em um modo daemonizado. Seu trabalho inicial deve procurar substituir a lógica do script, não apenas executar o script.

    
por SpamapS 27.01.2011 / 15:41
0

Eu acho que você vai querer começar ou parar em diferentes eventos, então será mais fácil configurar dois trabalhos diferentes.

Se os mesmos eventos alternarem seu aplicativo, você poderá configurar um trabalho com um script que verifique se está em execução ou não e, portanto, inicia ou interrompe seu aplicativo.

    
por luri 24.01.2011 / 23:40