Frage Können die symbolischen Links zu Config-Dateien über den Upstart gestartet werden?


Ich habe alle meine Upstart-Konfigurationsdateien unter Versionskontrolle. Meine ideale Möglichkeit, Upstart zu verwenden, besteht darin, Softlinks von meinem Versionskontroll-Repository (mercurial - nicht wichtig) in / etc / init zu erstellen, aber Upstart kann die Jobs nicht sehen. Alles ist in Ordnung, wenn ich die Dateien aus dem Repository-Verzeichnis nach / etc / init kopiere.

Wer weiß, warum Emporkömmling nicht mit symbolischen oder gar harten Verbindungen umgeht?

Vielen Dank

Chris


30
2017-10-20 17:41


Ursprung


Vielleicht war es eine Designentscheidung seitens der Upstart-Entwickler, weiche Links zu ignorieren? Wenn sich Ihr Repository auf der gleichen Partition befindet wie /etc/initVersuchen Sie es mit harten Links. - Steven Monday
Versuchte harte Links und das hat auch nicht funktioniert :-( - Chris McCauley
Lame. Tatsächlich werden Symlinks ignoriert, ohne dass manuell ein Aufruf von reload config erfolgt. Seufzer. Ich bevorzuge Symlinks. Reiniger in meinem Anwendungsfall. Naja. Ich werde nur die Dateien kopieren, wie Idiot. - James T Snell


Antworten:


Upstart unterstützt keine Symlinks, weil sie verweist möglicherweise auf eine Datei auf einer Partition, die beim Systemstart nicht geladen wird.

Ich habe das in meinem eigenen Projekt gelöst, indem ich die conf-Dateien in / etc / init / myscripts gesetzt habe und diese dann an ein Verzeichnis in meinem Repository gebunden habe. mount --bind /etc/init/myscripts ~/code/repo/initscripts.

Fügen Sie dies zu / etc / fstab hinzu und die Bindung wird persistent sein:

/etc/init/myscripts  /home/me/code/repo/initscripts      none    bind

Dies gibt Ihnen effektiv verbundene Verzeichnisse. Upstart behandelt die conf-Dateien wie alle anderen, da sie lokal für / etc / init sind. Ihre DVCS wird sie auch als lokale Dateien im Repo sehen, so dass sie auch wie alle anderen dort gespeicherten Dateien behandelt werden. Beste aus beiden Welten.


9
2017-12-20 14:49





Upstart überwacht seine Konfigurationsverzeichnisse mit inotify und lädt die Konfiguration neu, wenn sich eine der Dateien ändert oder eine neue Datei hinzugefügt wird. Anscheinend funktioniert dies nicht für symbolische Links.

Um die Konfiguration manuell zu aktualisieren, verwenden Sie

$ initctl reload-configuration

49
2018-01-20 13:11



das hat früher zuverlässig für mich funktioniert. In letzter Zeit funktioniert es bei Upstart 1.3 nur noch bei Jobs, die gestoppt wurden. - jcomeau_ictx
Für mich symlinks in / etc / init / work, aber wenn ich die Datei hinter dem Symlink ändere, wird die Datei nicht erneut von den Upstart-Tools gelesen. Ich brauchte Stunden um herauszufinden, dass der Symlink der Grund ist. Es verhält sich wie ein Cache, den niemand haben möchte. - peschü


Wie bereits erwähnt:

initctl reload-configuration

Wenn Sie jedoch einen Fehler wie den folgenden erhalten:

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")

Sie müssen das Sudo aufrufen:

sudo initctl reload-configuration

1
2018-05-29 16:02