Я использую Ubuntu Server 11.04. Я создал задание пользователя Upstart, как описаноздесь.
У меня есть следующий файл /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
Поскольку myuser
я могу нормально запускать, останавливать и перезагружать задание, оно работает идеально:
$ start sensors
sensors start/running, process 1332
$ stop sensors
sensors stop/waiting
Проблема в том, что задание не запускается автоматически при загрузке при mysql
запуске. После новой загрузки mysql
запускается, а мое sensors
задание нет.
Странно, что хотя работа не начинается при загрузке, если я использую sudo
для перезапуска, mysql
она действительно начинает мою работу. Следующие команды запускаются как myuser
при новом запуске:
$ status sensors
sensors stop/waiting
$ sudo restart mysql
mysql start/running, process 1209
$ status sensors
sensors start/running, process 1229
Документация по заданиям пользователя Upstart довольно ограничена. Какова правильная техника автоматического запуска задания пользователя при запуске системы?
Я знаю, что могу просто добавить что-то, rc.local
чтобы запустить его, или могу переместить свой, sensors.conf
но /etc/init
мне интересно, есть ли способ сделать это, используя только Upstart.
решение1
Проблема в том, что пользовательские задания не загружаются в Upstart до тех пор, пока пользователь не создаст сеанс Upstart, выполнив одну из initctl
команд.
Я описал это более подробно наhttp://bradleyayers.blogspot.com.au/2012/04/enabling-upstart-user-jobs-to-start-at.htmlа также написал задание Upstart, которое решает эту проблему.
решение2
Рассматривая такие источники, как /etc/init/mysql.conf
иhttp://upstart.ubuntu.com/cookbook/#start-onМне кажется, вам следует изменить свою start on
строку примерно так:
start on (mysql and runlevel [2345])
Я не уверен, что согласен с тем, что upstart не хватает документации, но мне действительно иногда трудно разобраться в документации. Обычно я просто пробую и ошибаюсь, пока не получится. Решение выше может быть излишним на самом деле... что-то такое простое, как это, может быть достаточным:
start on mysql