我正在运行 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 来做到这一点。
答案1
问题在于,用户作业直到用户通过运行其中一个initctl
命令创建 Upstart 会话后才会加载到 Upstart 中。
我已在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