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

8

Я работаю на сервере 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.

dgel
источник

Ответы:

8

Проблема в том, что пользовательские задания не загружаются в Upstart, пока пользователь не создаст сеанс Upstart, выполнив одну из initctlкоманд.

Я описал это более подробно на http://bradleyayers.blogspot.com.au/2012/04/enabling-upstart-user-jobs-to-start-at.html, а также написал работу Upstart, которая работает вокруг проблема.

bradley.ayers
источник
Есть еще один способ сделать это, задокументированный на upstart.ubuntu.com/cookbook/…, в котором есть ошибка, но вам нужно изменить «start session_init» на «start session-init».
natevw
-1

Глядя на источники , как /etc/init/mysql.confи http://upstart.ubuntu.com/cookbook/#start-on мне кажется , вы должны изменить свою start onлинию на что - то вроде этого:

start on (mysql and runlevel [2345])

Я не уверен, что согласен с тем, что у выскочки нет документации, но я уверен, что иногда мне тяжело разбираться в документации. Я обычно просто делаю проб и ошибок, пока не заработаю. Решение, приведенное выше, может быть излишним ... что-то настолько простое, насколько этого может быть достаточно:

start on mysql
Карл Зулауф
источник
Дело не в том, что у выскочки вообще нет документации, а в том, что в ней мало документации о пользовательских заданиях - заданиях, помещенных в /home/$USER/.init (не заданиях, помещенных в / etc / init).
dgel
Я попробовал ваши предложения, но без разницы. Это не проблема с моей start onстрокой, но это просто тот факт, что upstart загружает только / etc / init при запуске, но не пользовательские файлы инициализации в их$HOME/.init
dgel,
Извините, пропустил, что это была пользовательская работа, а не работа в /etc/init. Вы правы, что для этого, похоже, не хватает документации, и я не уверен, как обеспечить ~/.initзапуск сценариев.
Карл Зулауф
Документы, которые я мог найти, указывают, что $HOME/.initзадания не включены по умолчанию, и /etc/dbus-1/system.d/Upstart.confмогут потребоваться некоторые изменения . upstart.ubuntu.com/cookbook/#run-a-job-as-a-different-user
Карл Зулауф