
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 myuser
posso 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, mysql
está em execução, mas meu sensors
trabalho não está.
O que é estranho é que, embora o trabalho não comece na inicialização, se eu sudo
reiniciar, mysql
ele realmente inicia meu trabalho. Os seguintes comandos são executados a myuser
partir 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.local
para iniciá-lo ou posso mudar sensors.conf
para , /etc/init
mas 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 initctl
comandos.
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.conf
ehttp://upstart.ubuntu.com/cookbook/#start-onparece-me que você deveria mudar sua start on
linha 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