Executando tarefas do usuário do Upstart na inicialização

8

Estou executando o servidor Ubuntu 11.04. Eu criei um trabalho de usuário Upstart conforme descrito aqui .

Eu tenho o seguinte arquivo no meu /home/myuser/.init/sensors.conf :

start on started mysql
stop on stopping mysql


chdir /home/myuser/mydir/project
exec /home/myuser/mydir/env/bin/python /home/myuser/mydir/project/manage.py sensors

respawn

respawn limit 10 90

Como myuser eu posso iniciar, parar e recarregar o trabalho, tudo funciona perfeitamente:

$ start sensors
sensors start/running, process 1332
$ stop sensors
sensors stop/waiting

O problema é que o trabalho não está sendo iniciado automaticamente na inicialização quando mysql é iniciado. Após uma inicialização recente, mysql está em execução, mas meu trabalho sensors não é.

O que é estranho é que, embora o trabalho não comece na inicialização, se eu usar sudo para reiniciar o mysql , ele realmente iniciará meu trabalho. Os seguintes comandos são executados como myuser de uma nova inicialização:

$ status sensors
sensors stop/waiting
$ sudo restart mysql
mysql start/running, process 1209
$ status sensors
sensors start/running, process 1229

A documentação para trabalhos do usuário Upstart é bastante limitada. Qual é a técnica correta para que um trabalho de usuário inicie automaticamente na inicialização do sistema?

Eu sei que posso simplesmente jogar algo em rc.local para iniciá-lo, ou eu poderia mover meu sensors.conf para /etc/init , mas estou curioso para saber se há uma maneira de fazer isso usando apenas o Upstart.

    
por dgel 23.11.2011 / 21:27

2 respostas

8

O problema é que as tarefas do usuário não são carregadas no Upstart até que o usuário crie uma sessão do Upstart executando um dos comandos initctl .

Eu descrevi isso com mais detalhes em link e também escreveu um trabalho do Upstart que funciona em torno do problema.

    
por 26.04.2012 / 23:42
-1

Analisando fontes como /etc/init/mysql.conf e link , parece-me que você deve alterar seu start on linha para algo como isto:

start on (mysql and runlevel [2345])

Não tenho certeza se concordo que a falta de documentação tenha falta de documentação, mas tenho certeza que é difícil entender os documentos às vezes. Eu costumo fazer tentativa e erro até que esteja funcionando. A solução acima pode ser um exagero, na verdade ... algo tão simples como isso pode ser suficiente:

start on mysql
    
por 24.11.2011 / 00:40