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, ele funciona perfeitamente:
$ start sensors
sensors start/running, process 1332
$ stop sensors
sensors stop/waiting
O problema é que o trabalho não é iniciado automaticamente na inicialização quando é mysql
iniciado. Depois de uma nova inicialização, mysql
está em execução, mas meu sensors
trabalho não é.
O que é estranho, é que, embora o trabalho não comece na inicialização, se eu usar sudo
para reiniciar, mysql
ele realmente inicia o meu trabalho. Os seguintes comandos são executados a partir 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 do usuário seja iniciado automaticamente na inicialização do sistema?
Eu sei que posso simplesmente jogar algo rc.local
para iniciá-lo, ou eu poderia mudar o meu sensors.conf
para, /etc/init
mas estou curioso para saber se existe uma maneira de fazer isso usando apenas o Upstart.
Olhando para fontes como
/etc/init/mysql.conf
e http://upstart.ubuntu.com/cookbook/#start-on , parece-me que você deve mudar suastart on
linha para algo assim:Não sei se concordo que o iniciante carece de documentação, mas às vezes tenho dificuldade em entender os documentos. Normalmente, apenas faço tentativa e erro até que funcione. A solução acima pode ser um exagero, na verdade ... algo tão simples quanto isso pode ser suficiente:
fonte
start on
linha, mas é apenas o fato de que o iniciante carrega apenas o / etc / init na inicialização, mas não os arquivos init do usuário em seus programas.$HOME/.init
/etc/init
. Você está certo de que falta documentação para isso e não sei como garantir que os~/.init
scripts sejam iniciados.$HOME/.init
trabalhos não estão ativados por padrão e que algumas alterações/etc/dbus-1/system.d/Upstart.conf
podem ser necessárias. upstart.ubuntu.com/cookbook/#run-a-job-as-a-different-user