CentOS 6 e upstart

18

O novo CentOS 6 vem com o Upstart, substituindo o init. Eu estou tentando converter um arquivo / etc / inittab para o novo formato upstart. Este servidor específico tem apenas 15 ou mais entradas inittab, no entanto, outros servidores têm > 30. Nós estamos querendo principalmente a parte do 'respawn' do inittab e do upstart. No entanto, tenho lido toda a documentação que eu posso encontrar (que é praticamente toda baseada no Ubuntu, e aparentemente em uma versão antiga do upstart) e não chegando a lugar nenhum. Eu posso criar um arquivo de configuração (vamos chamá-lo /etc/init/test.conf). O arquivo contém isso (nota, anonimizado)

start on runlevel [345]
stop on starting shutdown

respawn
#Comment about what it does
exec su -c "/usr/bin/ssh -2CNL 11111:127.0.0.1:11111 10.10.1.1" username

Se eu emitir um initctl reload-configuration , o trabalho será reconhecido. Eu posso iniciá-lo chamando initctl start test e o trabalho será iniciado.

No entanto, isso não funcionará em uma reinicialização, apenas manualmente. Eu tentei modificar o comando start para o seguinte, tudo sem sorte

start on started

start on (local-filesystems and net-device-up IFACE!=lo)

start on net-device-up IFACE=eth0 

e cerca de uma dúzia de outras maneiras que eu pude ver mencionadas em diferentes exemplos. Nenhum parece iniciar o script. (test.conf, como todos os outros arquivos desta pasta, são de propriedade root e 644)

Eu estou sentindo falta de algo claramente óbvio?

    
por Brian 18.07.2011 / 20:41

3 respostas

32

Eu encontrei um script muito, muito, muito útil para pessoas que estão tendo problemas no futuro. Coloque isso em / etc / init /

# /etc/init/debug.conf
start on ( starting JOB!=debug \
or started JOB!=debug \
or stopping JOB!=debug \
or stopped JOB!=debug )
script
exec 1>>/tmp/log.file
echo -n "$UPSTART_JOB/$UPSTART_INSTANCE ($0):$$:'date':"
echo "Job $JOB/$INSTANCE $UPSTART_EVENTS. Environment was:"
env
echo
end script

Este script basicamente registra todos os trabalhos que iniciam ou param. Eu descobri que o CentOS 6 não "emite" nada sobre runlevels. (nem alguns dos outros eventos comuns que eu havia tentado. '). A procura do arquivo de log que a tarefa de depuração cria em /tmp/log.file foi muito útil. Alterando o início do meu script de:

start on runlevel [345]

para

start on started sshd

todos os meus trabalhos aparecem para iniciar corretamente. Isso foi uma dor na parte traseira, já que todos os exemplos que encontrei usaram a antiga sintaxe ..

    
por 19.07.2011 / 23:17
15

Desculpe pelo necroposting, mas consegui resolver esse problema usando o seguinte:

start on stopped rc RUNLEVEL=[345]

"parado" não é um erro de digitação - o rc parece parar ao entrar em um nível de execução.

    
por 18.03.2012 / 13:19
5

Foi o que fiz (CentOS 6, Upstart 0.6.5) para depurar problemas de reaparecimento. Em um terminal diferente, faça

sudo initctl log-priority debug 
sudo tail -F /var/log/messages
    
por 27.08.2014 / 21:12