すべてのupstart構成ファイルをバージョン管理下に置いています。 upstartを使用する理想的な方法は、バージョン管理リポジトリ(Mercurial-重要ではない)から/ etc/initにソフトリンクを作成することですが、upstartはジョブを表示できません。リポジトリー・ディレクトリーから/ etc/initにファイルをコピーすれば、すべてうまくいきます。
Upstartがシンボリックリンクまたはハードリンクの処理に失敗する理由を知っている人はいますか?
ありがとう
クリス
Upstartは、シンボリックリンクをサポートしません。これは、それらが ブート時にロードされないパーティション上のファイルを指している可能性があるためです 。
私は自分のプロジェクトでconfファイルを/ etc/init/myscriptsに置き、それを私のリポジトリのディレクトリにバインドすることでこれを回避しました。 mount --bind /etc/init/myscripts ~/code/repo/initscripts
。
これを/ etc/fstabに追加すると、バインディングが永続的になります。
/etc/init/myscripts /home/me/code/repo/initscripts none bind
これにより、ハードリンクされたディレクトリが効果的に提供されます。 Upstartは、/ etc/initに対してローカルであるため、confファイルを他のファイルと同様に扱います。 DVCSは、それらをリポジトリ内のローカルファイルとしても認識するため、そこに格納されている他のファイルと同様に扱います。両方の長所。
Upstartは、inotifyで構成ディレクトリを監視し、ファイルが変更されたり、新しいファイルが追加されたりすると、構成を再読み込みします。どうやらこれはシンボリックリンクでは機能しません。
設定を手動で更新するには
$ initctl reload-configuration
前に述べたように:
initctl reload-configuration
ただし、次のようなエラーが発生した場合:
initctl: Rejected send message, 1 matched rules; type="method_call", sender=":1.155" (uid=1000 pid=6177 comm="initctl reload-configuration ") interface="com.ubuntu.Upstart0_6" member="ReloadConfiguration" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")
Sudoを呼び出す必要があります。
Sudo initctl reload-configuration