私は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.conf
とhttp://upstart.ubuntu.com/cookbook/#start-onstart on
次のように行を変更したほうがよいと思われます:
start on (mysql and runlevel [2345])
Upstart にドキュメントが不足しているという意見には同意できませんが、ドキュメントを理解するのに苦労することは確かです。通常は、動作するまで試行錯誤するだけです。上記の解決策は実際にはやりすぎかもしれません... 次のような単純なもので十分かもしれません:
start on mysql