Czy upstart może obsługiwać dowiązania symboliczne do plików konfiguracyjnych?


30

Mam wszystkie moje pliki konfiguracji upstart pod kontrolą wersji. Mój idealny sposób na użycie upstart to utworzenie miękkich linków z mojego repozytorium kontroli wersji (mercurial - nie ma to znaczenia) do / etc / init, ale upstart nie widzi zadań. Wszystko jest w porządku, jeśli skopiuję pliki z katalogu repozytorium do / etc / init.

Czy ktoś wie, dlaczego upstart nie obsługuje dowiązań symbolicznych, a nawet twardych?

Dzięki

Chris


1
Może deweloperzy Upstart postanowili zignorować miękkie linki? W każdym razie, jeśli twoje repozytorium znajduje się na tej samej partycji co /etc/init, spróbuj użyć twardych linków.
Steven poniedziałek,

Próbowałem twardych linków i to też nie działało :-(
Chris McCauley

Kulawy. Rzeczywiście, dowiązania symboliczne są ignorowane bez ręcznego wywołania w celu przeładowania konfiguracji. Westchnienie. Wolę dowiązania symboliczne. Środek czyszczący w mojej walizce. No cóż. Po prostu skopiuję pliki, jak kretyn.
James T Snell

Odpowiedzi:


9

Upstart nie obsługuje dowiązań symbolicznych, ponieważ mogą wskazywać na plik na partycji, który nie jest ładowany podczas uruchamiania .

Poradziłem sobie z tym w swoim własnym projekcie, umieszczając pliki conf w / etc / init / myscripts, a następnie wiążąc je z katalogiem w moim repozytorium. mount --bind /etc/init/myscripts ~/code/repo/initscripts.

Dodaj to do / etc / fstab, a wiązanie będzie trwałe:

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

To skutecznie daje ci sztywno powiązane katalogi. Upstart będzie traktował pliki conf jak każdy inny, ponieważ są one lokalne dla / etc / init. Twój DVCS będzie również widział je jako pliki lokalne w repozytorium, więc będzie je traktował tak samo, jak wszystkie inne pliki tam przechowywane. Najlepsze z obu światów.


49

Upstart obserwuje katalogi konfiguracyjne z inotify i przeładowuje konfigurację, gdy dowolny plik się zmieni lub zostanie dodany nowy plik. Najwyraźniej nie działa to w przypadku dowiązań symbolicznych.

Aby ręcznie zaktualizować konfigurację, użyj

$ initctl reload-configuration

to działało dla mnie niezawodnie. ostatnio w wersji upstart 1.3 działa tylko na zadaniach, które są zatrzymane.
jcomeau_ictx

2
Dla mnie dowiązania symboliczne w / etc / init / work, ale jeśli zmienię plik za dowiązaniem symbolicznym, plik nie zostanie ponownie odczytany przez narzędzia upstart. Kilka godzin zajęło mi odkrycie, że powodem jest link symboliczny. Działa jak pamięć podręczna, której nikt nie chce mieć.
peschü

1

Jak wspomniano wcześniej:

initctl reload-configuration

Jeśli jednak wystąpi błąd podobny do następującego:

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

Musisz wywołać sudo:

sudo initctl reload-configuration
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.