在启动时运行Upstart用户作业

Modified on: Fri, 02 Aug 2019 03:20:02 +0800

我正在运行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

最佳答案

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

我在http://bradleyayers.blogspot.com.au/2012/04/enabling-upstart-user-jobs-to-start-at.html还写了一个可以解决的Upstart工作问题。


相关问答

添加新评论