在启动时运行 Upstart 用户作业

dge*_*gel 8 ubuntu 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
Run Code Online (Sandbox Code Playgroud)

因为myuser我可以正常启动、停止和重新加载工作 - 它运行良好:

$ start sensors
sensors start/running, process 1332
$ stop sensors
sensors stop/waiting
Run Code Online (Sandbox Code Playgroud)

问题是作业在启动时不会在启动时自动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
Run Code Online (Sandbox Code Playgroud)

Upstart 用户作业的文档非常有限。在系统启动时自动启动用户作业的正确技术是什么?

我知道我可以扔东西rc.local来启动它,或者我可以移动我的sensors.conf/etc/init但我很好奇是否有办法只使用 Upstart 来做到这一点。

小智 8

问题是,在用户通过运行其中一个initctl命令创建 Upstart 会话之前,用户作业不会加载到 Upstart 中。

我已经在http://bradleyayers.blogspot.com.au/2012/04/enabling-upstart-user-jobs-to-start-at.html上更详细地描述了它,并且还编写了一个 Upstart 工作来解决问题。