启动时运行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来完成。

Answers:


8

问题在于,直到用户通过运行以下initctl命令之一创建Upstart会话,用户作业才会加载到Upstart中。

我已经在http://bradleyayers.blogspot.com.au/2012/04/enabling-upstart-user-jobs-to-start-at.html上对其进行了更详细的描述,并且还撰写了一份关于问题。


upstart.ubuntu.com/cookbook/…上有另一种记录此问题的方法 -尽管它有一个错误,您需要将“ start session_init”更改为“ start session-init”。
natevw 2014年

-1

看着像源/etc/init/mysql.confhttp://upstart.ubuntu.com/cookbook/#start-on在我看来,你应该改变你的start on线路是这样的:

start on (mysql and runlevel [2345])

我不确定我是否同意暴发户缺乏文档,但是我有时确实很难理解文档。我通常只是反复尝试,直到它起作用为止。上面的解决方案实际上可能会矫kill过正……只要这样简单就可以了:

start on mysql

并不是新贵一般都没有文档,而是它没有太多有关用户作业的文档-放在/home/$USER/.init中的作业(不是放在/ etc / init中的作业)。
dgel 2011年

我尝试了您的建议,但没有区别。这不是我的问题start on,但这只是事实,新贵在启动时仅加载/ 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-a-other-user
Carl Zulauf 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.