job upstart funciona apenas com início / parada manual

3

Eu tenho um trabalho muito pequeno em /etc/init/tsm.conf para iniciar o cliente de backup após o início da rede. Funciona apenas ok se eu iniciar / parar manualmente via service tsm start|stop|status . Mas service tsm enable diz tsm: unrecognized service . Por isso, não inicia na inicialização automaticamente. sudo service --status-all também não aparece na lista de trabalhos conhecidos.

Aqui está:

start on started networking
stop on stopped networking

respawn

script
#!/bin/bash
dsmc schedule > /dev/null
end script

Eu corro o Ubuntu 12.04.4. A versão upstart é 1.5-0ubuntu7.2. Alguém poderia me ajudar? :)

UPDATE

Usar initctl list e outros comandos initctl mostra meu trabalho.

    
por Alexander 24.01.2014 / 10:24

3 respostas

3

A partir da minha experiência, você não precisa "ativar" nada, apenas coloque o arquivo .conf em / etc / init e aproveite.

Você pode verificar se o script é executado adicionando uma linha como esta no script:

echo "alive" > /alive_and_well

Isso criará o arquivo "alive_and_well" em seu diretório raiz se o script for executado.

Se isso não acontecer, o problema é mais provável na estrofe "start on". Aqui está o que eu uso para essas coisas (conhecidas por trabalhar):

start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]

Também os shebangs em scripts Upstart não são suportados, então "#! / bin / bash" é inútil (AFAIK).

    
por Shnatsel 24.01.2014 / 11:10
0

Veja os outros trabalhos iniciantes listados em /etc/init.d/ . No meu sistema, eles são todos links simbólicos para /lib/init/upstart-job , o que faz com que o comando service funcione (estou executando o Saucy).

Tente criar o mesmo symlink se quiser que o comando service funcione.

Caso contrário, use start , stop e restart diretamente.

    
por Robie Basak 24.01.2014 / 10:48
0

Parece que o serviço está em execução, mas você não está vendo o comportamento que espera dele. Se ele precisar ser executado como um determinado usuário ou com variáveis de ambiente definidas, talvez seja necessário especificá-las. Certifique-se de que o comando dsmc esteja em seu PATH ou mude para o diretório em que ele reside.

Do Cookbook Upstart: link

Variáveis de ambiente: O Upstart permite que você defina variáveis de ambiente que estarão acessíveis para os trabalhos cujos arquivos de configuração de tarefas estão definidos. As variáveis de ambiente são definidas usando a palavra-chave env.

env ENV_VAR=value

Definir ID do grupo: altera o grupo antes de executar o processo do trabalho.

setgid <groupname>

Definir ID do usuário: altera o usuário antes de executar o processo do trabalho.

setuid <username>

Alterar diretório: executa os processos da tarefa com um diretório de trabalho no diretório especificado, em vez da raiz do sistema de arquivos.

chdir <directory>
    
por thinkmassive 11.02.2014 / 02:32