すべてのupstart構成ファイルがバージョン管理されています。upstartを使用する理想的な方法は、バージョン管理リポジトリ(mercurial-重要ではありません)から/ etc / initにソフトリンクを作成することですが、upstartはジョブの表示に失敗します。リポジトリディレクトリから/ etc / initにファイルをコピーすれば、すべて問題ありません。
upstartがシンボリックリンクまたはハードリンクさえも処理できない理由を誰もが知っていますか?
ありがとう
クリス
すべての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
/etc/init、ハードリンクを使用してみてください。