Upstart può gestire collegamenti simbolici a file di configurazione?


30

Ho tutti i miei file di configurazione upstart sotto controllo di versione. Il mio modo ideale per usare upstart è creare collegamenti soft dal mio repository di controllo versione (mercurial - non che contenga) in / etc / init ma upstart non riesca a vedere i lavori. Va tutto bene se copio i file dalla directory del repository a / etc / init.

Qualcuno sa perché upstart non riesce a gestire i collegamenti simbolici o addirittura hard?

Grazie

Chris


1
Forse è stata una decisione di progettazione da parte degli sviluppatori Upstart ignorare i collegamenti software? Ad ogni modo, se il tuo repository si trova sulla stessa partizione di /etc/init, prova a utilizzare i collegamenti reali.
Steven lunedì

Ho provato collegamenti duri e non ha funzionato neanche :-(
Chris McCauley,

Noioso. In effetti i collegamenti simbolici vengono ignorati senza una chiamata manuale per ricaricare la configurazione. Sospiro. Preferisco i symlink. Più pulito nel mio caso d'uso. Oh bene. Copierò solo i file, come jerk.
James T Snell,

Risposte:


9

Upstart non supporta i collegamenti simbolici perché potrebbero puntare a un file su una partizione che non viene caricato al momento dell'avvio .

Ho risolto questo problema nel mio progetto inserendo i file conf in / etc / init / myscripts e poi collegandolo a una directory nel mio repository. mount --bind /etc/init/myscripts ~/code/repo/initscripts.

Aggiungi questo a / etc / fstab e l'associazione sarà persistente:

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

Questo ti dà effettivamente directory hard-linkate. Upstart tratterà i file conf come qualsiasi altro, perché sono locali in / etc / init. Il DVCS li vedrà anche come file locali nel repository, quindi li tratterà come qualsiasi altro file memorizzato lì. Il meglio di entrambi i mondi.


49

Upstart guarda le sue directory di configurazione con inotify e ricarica la configurazione quando uno dei file cambia o viene aggiunto un nuovo file. Apparentemente questo non funziona per i collegamenti simbolici.

Per aggiornare manualmente la configurazione utilizzare

$ initctl reload-configuration

questo ha funzionato in modo affidabile per me. recentemente su upstart 1.3 funziona solo su lavori che sono stati interrotti.
jcomeau_ictx,

2
Per me symlink in / etc / init / work ma se cambio il file dietro il symlink il file non viene riletto dagli strumenti di avvio. Mi ci sono volute ore per scoprire che il collegamento simbolico è la ragione. Si comporta come una cache che nessuno vuole avere.
Peschü,

1

Come menzionato prima:

initctl reload-configuration

Tuttavia, se viene visualizzato un errore simile al seguente:

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

Devi invocare il sudo:

sudo initctl reload-configuration
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.