Назад | Перейти на главную страницу

Запуск пользовательских заданий Upstart при запуске

Я использую сервер 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