起動時にUpstartユーザージョブを実行する

起動時に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

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

問題は、ユーザーがコマンドの 1 つを実行して Upstart セッションを作成するまで、ユーザー ジョブが Upstart にロードされないことですinitctl

詳しくはhttp://bradleyayers.blogspot.com.au/2012/04/enabling-upstart-user-jobs-to-start-at.htmlまた、問題を回避する Upstart ジョブも作成しました。

答え2

などの情報源を見る/etc/init/mysql.confhttp://upstart.ubuntu.com/cookbook/#start-onstart on次のように行を変更したほうがよいと思われます:

start on (mysql and runlevel [2345])

Upstart にドキュメントが不足しているという意見には同意できませんが、ドキュメントを理解するのに苦労することは確かです。通常は、動作するまで試行錯誤するだけです。上記の解決策は実際にはやりすぎかもしれません... 次のような単純なもので十分かもしれません:

start on mysql

関連情報