Я использую сервер Ubuntu 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.
Проблема в том, что пользовательские задания не загружаются в Upstart, пока пользователь не создаст сеанс Upstart, запустив один из initctl
команды.
Я описал это более подробно на http://bradleyayers.blogspot.com.au/2012/04/enables-upstart-user-jobs-to-start-at.html а также написал задание Upstart, которое помогает решить эту проблему.
Глядя на такие источники, как /etc/init/mysql.conf
и http://upstart.ubuntu.com/cookbook/#start-on мне кажется, тебе стоит сменить start on
строка примерно так:
start on (mysql and runlevel [2345])
Я не уверен, что согласен с тем, что у выскочки отсутствует документация, но я уверен, что иногда мне трудно разбираться в документации. Обычно я просто использую метод проб и ошибок, пока он не заработает. Приведенное выше решение может быть излишним ... чего-то столь же простого, может быть достаточно:
start on mysql