Executando tarefas de curto prazo via upstart

3

SO: Ubuntu 12.04

Tarefa: execute o script em determinadas condições de início / parada. Nenhum serviço de longa duração / daemon é lançado, apenas ações de curto prazo.

Script upstart test.conf:

description     "test script"

start on local-filesystems or runlevel [2345]
stop on runlevel [!2345]

task

pre-start exec /full/path/to/script.sh start
pre-stop exec /full/path/to/script.sh stop

Problemas:

  1. A execução do 'teste inicial' nunca termina. Se eu Ctrl-C for suspenso, chamadas de 'status' furtehr mostram que o serviço está em execução. '
  2. 'teste de parada' não resulta na execução de uma estrofe 'pré-parada'.

A tarefa original é solucionável usando scripts upstart?

Obrigado.

Atualize. "o fato de que seu script.sh tem ações de início e parada, o que sugere um daemon de longa duração"

Nenhuma contradição. Há ação de inicialização e ação de limpeza, sem processo (s) de longa duração entre eles.

Quando eu adiciono a estrofe 'exec', por exemplo

exec /full/path/to/script.sh idle

o resultado é este:

$ start test
test stop/waiting

$ status test
test stop/waiting

$ stop test
stop: Unknown instance:

Correção : O script mencionado nas sub-rotinas é executado com os parâmetros 'start' e 'idle', mas não com 'stop'.

    
por Konstantin Boyandin 16.09.2013 / 18:41

1 resposta

2

Seu arquivo de configuração upstart não possui uma seção exec ou script , e você parece querer iniciar as coisas apenas com o comando pre-start, o que não é correto. Pela documentação inicial ( link ):

  

Todos os arquivos de trabalho devem ter uma sub-rotina exec ou script. este   especifica o que será executado para o trabalho.

     

O código de shell adicional pode ser fornecido para ser executado antes ou depois da   binário ou script especificado com exec ou script. Estes não são esperados   para iniciar o processo, na verdade, eles não podem. Eles são destinados para   preparando o ambiente e limpando depois.

Além disso, o que sua tarefa original solicita ("Nenhum serviço de longa duração / daemon é iniciado, apenas ações de curto prazo") parece contradizer o fato de que seu script.sh tem as ações start e stop , o que faz sugerir um daemon de longa duração.

description     "test script"

start on local-filesystems or runlevel [2345]
stop on runlevel [!2345]

task

# Assuming script.sh start starts, performs a process, and then exits,
# this should work
exec /full/path/to/script.sh start

# No need for a pre-stop

O documento inicial que eu criei é supostamente obsoleto, você também pode dar uma olhada no link que é uma boa referência e tem exemplos úteis, então sugiro que você leia se as coisas ainda não estiverem claras.

    
por roadmr 16.09.2013 / 18:53