O upstart pode manipular links simbólicos para arquivos de configuração?

30

Eu tenho todos os meus arquivos de configuração upstart sob controle de versão. Minha maneira ideal de usar o upstart é criar links do meu repositório de controle de versão (mercurial - não que isso importe) para o / etc / init, mas o upstart não consegue ver os jobs. Tudo está bem se eu copiar os arquivos do diretório do repositório para / etc / init.

Alguém sabe por que o upstart falha em lidar com links simbólicos ou mesmo hard links?

Obrigado

Chris

    
por Chris McCauley 20.10.2010 / 19:41

3 respostas

9

O Upstart não suporta links simbólicos porque eles podem apontar para um arquivo em uma partição que não é carregada em tempo de inicialização .

Eu consegui contornar isso em meu próprio projeto colocando os arquivos conf em / etc / init / myscripts e então vinculando isso a um diretório em meu repositório. mount --bind /etc/init/myscripts ~/code/repo/initscripts .

Adicione isto ao / etc / fstab e a ligação será persistente:

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

Isso efetivamente fornece diretórios com hard-link. O Upstart tratará os arquivos conf como qualquer outro, porque eles são locais para / etc / init. O seu DVCS também os verá como arquivos locais no repositório, por isso também os tratará como faria com qualquer outro arquivo armazenado lá. Melhor dos dois mundos.

    
por 20.12.2012 / 15:49
49

O Upstart observa seus diretórios de configuração com inotify e recarrega a configuração quando qualquer um dos arquivos é alterado ou um novo arquivo é adicionado. Aparentemente, isso não funciona para links simbólicos.

Para atualizar manualmente o uso da configuração

$ initctl reload-configuration
    
por 20.01.2011 / 14:11
1

Como mencionado antes:

initctl reload-configuration

No entanto, se você receber um erro como o seguinte:

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

Você deve invocar o sudo:

sudo initctl reload-configuration
    
por 29.05.2016 / 18:02