Executando trabalhos de usuário do Upstart na inicialização

Executando trabalhos de usuário do Upstart na inicialização

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

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 myuserposso iniciar, parar e recarregar o trabalho sem problemas, ele funciona perfeitamente:

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

O problema é que o trabalho não inicia automaticamente na inicialização quando mysqlé iniciado. Depois de uma nova inicialização, mysqlestá em execução, mas meu sensorstrabalho não está.

O que é estranho é que, embora o trabalho não comece na inicialização, se eu sudoreiniciar, mysqlele realmente inicia meu trabalho. Os seguintes comandos são executados a myuserpartir 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 de usuário do Upstart é bastante limitada. Qual é a técnica correta para que um trabalho do usuário seja iniciado automaticamente na inicialização do sistema?

Eu sei que posso simplesmente adicionar algo rc.localpara iniciá-lo ou posso mudar sensors.confpara , /etc/initmas estou curioso para saber se existe uma maneira de fazer isso usando apenas o Upstart.

Responder1

O problema é que os trabalhos do usuário não são carregados no Upstart até que o usuário crie uma sessão do Upstart executando um dos initctlcomandos.

Eu descrevi isso com mais detalhes emhttp://bradleyayers.blogspot.com.au/2012/04/enabling-upstart-user-jobs-to-start-at.htmle também escrevi um trabalho Upstart que contorna o problema.

Responder2

Olhando para fontes como /etc/init/mysql.confehttp://upstart.ubuntu.com/cookbook/#start-onparece-me que você deveria mudar sua start onlinha para algo assim:

start on (mysql and runlevel [2345])

Não tenho certeza se concordo que o iniciante não tenha documentação, mas às vezes tenho dificuldade em entender os documentos. Normalmente faço apenas tentativa e erro até que funcione. A solução acima pode ser um exagero, na verdade... algo tão simples como isto pode ser suficiente:

start on mysql

informação relacionada