Upstartは設定ファイルへのシンボリックリンクを処理できますか?


30

すべてのupstart構成ファイルがバージョン管理されています。upstartを使用する理想的な方法は、バージョン管理リポジトリ(mercurial-重要ではありません)から/ etc / initにソフトリンクを作成することですが、upstartはジョブの表示に失敗します。リポジトリディレクトリから/ etc / initにファイルをコピーすれば、すべて問題ありません。

upstartがシンボリックリンクまたはハードリンクさえも処理できない理由を誰もが知っていますか?

ありがとう

クリス


1
おそらく、ソフトリンクを無視するのはUpstart開発者側の設計上の決定だったのでしょうか?とにかく、リポジトリがと同じパーティションにある場合は/etc/init、ハードリンクを使用してみてください。
スティーブン

ハードリンクを試してみたが、どちらも機能しなかった:-(
クリスマッコーリー

ラメ。実際、設定をリロードするための手動呼び出しがなければ、シンボリックリンクは無視されます。ため息。シンボリックリンクが好きです。私のユースケースのクリーナー。しかたがない。ジャークのように、ファイルをコピーするだけです。
ジェームズTスネル14年

回答:


9

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は、レポジトリ内のローカルファイルとしても表示されるため、そこに保存されている他のファイルと同様に処理します。両方の長所。


49

Upstartは、inotifyを使用して構成ディレクトリを監視し、ファイルのいずれかが変更されるか、新しいファイルが追加されると、構成をリロードします。どうやらこれはシンボリックリンクでは機能しません。

構成を手動で更新するには

$ initctl reload-configuration

これは私にとっては確実に機能していました。最近のupstart 1.3では、停止したジョブでのみ機能します。
jcomeau_ictx 14

2
私にとっては/ etc / init /のシンボリックリンクは機能しますが、シンボリックリンクの背後にあるファイルを変更しても、そのファイルはupstartツールによって再読み取りされません。シンボリックリンクが理由であることを知るのに何時間もかかりました。誰も持ちたくないキャッシュのように機能します。
ペシュー

1

前に述べたように:

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.