Script de inicialização no Ubuntu 12.04 não está sendo executado. Dependências / ordem de carregamento.

1

Eu quero criar um script de inicialização simples no Ubuntu 12.04:

myscript.sh

#!/bin/sh
sudo /etc/init.d/nginx start
cd ~/app/current
god -c config/resque.god
sudo /etc/init.d/redis-server start
echo "SCRIPT RUN"

Eu tenho isso em /etc/init.d/myscript.sh

Quando faço

sudo chkconfig --level 2345 myscript.sh

eu recebo     myscript.sh 2345

Quando faço

 sudo chkconfig --add myscript.sh

Eu obtenho

insserv: warning: script 'K01myscript.sh' missing LSB tags and overrides
insserv: warning: script 'myscript.sh' missing LSB tags and overrides
The script you are attempting to invoke has been converted to an Upstart
job, but lsb-header is not supported for Upstart jobs.
insserv: warning: script 'dbus' missing LSB tags and overrides
....
myscript.sh               0:off  1:off  2:on   3:on   4:on   5:on   6:off

**** EDITAR

Eu verifiquei o boot.log e acontece que o script é executado, mas o problema é que deus não é carregado ainda quando o script é executado. Aparentemente eu quero carregar este script como a última coisa na inicialização (ou de alguma forma verificar se deus está carregado e então iniciar o script).

    
por stpn 27.07.2012 / 21:03

2 respostas

2

Você provavelmente também terá problemas com a linha cd ~/app/current . ~ significa o diretório inicial do usuário atual. Eu não sei o que scripts de usuário em init.d são executados como, eu imagino, root, mas eu acho que você está se referindo ao seu próprio $HOME não de raiz. Nesse caso, você deve usar caminhos absolutos.

Se eu entendi a linha chkconfig corretamente, você está dizendo ao sistema para executar seus scripts nos níveis de init 2 a 5. Como é um script de alto nível que depende de outros módulos sendo carregados, você deve apenas executá-lo um runlevels mais tarde. Dê uma olhada em esta página para mais informações sobre runlevels.

Com base na página chkconfig man, parece que o que você quer é:

sudo chkconfig myscript.sh 35
    
por 14.08.2012 / 21:51
1

A mensagem de erro que você está recebendo é porque você está perdendo as tags LSB. Para um purista, seu script init.d é horrível porque não contém comentários sobre o que está tentando alcançar, não tem funções de iniciar / parar e geralmente não se comporta como um script init.d. No entanto, para seus objetivos, isso não importa muito, a menos que você esteja trabalhando em um sistema compartilhado. Sugiro colocar comentários em todos os roteiros que você escreve sobre o propósito, quando foi escrito e por quem - é apenas uma boa prática.

link

Dê uma olhada na página man ( link ) especificamente nesta seção:

# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for \
#              higher quality random number generation.

Ou sub-rotinas no estilo LSB:

### BEGIN INIT INFO
# Provides: foo
# Required-Start: bar
# Defalt-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Foo init script
### END INIT INFO

Quais são "melhores". Não faz sentido reescrever a página do manual aqui - reserve um tempo para entender o que um script init.d deve fazer lendo os documentos.

Eu acho que você quer algo como:

# chkconfig: 2345 99 1

Você pode verificar novamente fazendo /etc/rc2.d/*myscript* para ver os níveis S e K para os quais foi definido.

    
por 23.02.2013 / 05:35