Não é possível adicionar script ao init.d

2

Eu instalei o gerrit em um servidor ubuntu remoto. Agora eu gostaria que ele fosse iniciado automaticamente quando o servidor fosse reinicializado. Eu estou tentando seguir isso:

link

que é um verso:

sudo ln -snf 'pwd'/home/gerrit2/gerrit_application/bin/gerrit.sh /etc/init.d/gerrit.sh
sudo ln -snf ../init.d/gerrit.sh /etc/rc3.d/S90gerrit

Eu verifiquei que ambos os arquivos são criados. Mas quando eu reiniciar o aplicativo não é iniciado. Eu ainda tenho que iniciá-lo manualmente com:

root@mm11:/home/gerrit2/gerrit_application/bin# ./gerrit.sh start

Como depurar / corrigir isso?

Eu também tentei com:

sudo ln -snf /home/gerrit2/gerrit_application/bin/gerrit.sh /etc/init.d/gerrit
sudo update-rc.d gerrit defaults

O que dá:

root@mm11:/home/gerrit2# update-rc.d gerrit defaults
 Adding system startup for /etc/init.d/gerrit ...
   /etc/rc0.d/K20gerrit -> ../init.d/gerrit
   /etc/rc1.d/K20gerrit -> ../init.d/gerrit
   /etc/rc6.d/K20gerrit -> ../init.d/gerrit
   /etc/rc2.d/S20gerrit -> ../init.d/gerrit
   /etc/rc3.d/S20gerrit -> ../init.d/gerrit
   /etc/rc4.d/S20gerrit -> ../init.d/gerrit
   /etc/rc5.d/S20gerrit -> ../init.d/gerrit
    
por u123 19.09.2013 / 20:07

3 respostas

1

Primeiro, você deve copiar seu script no pool de scripts:

/etc/init.d/

o linux tem um conjunto de diretores que contém um conjunto de links para este conjunto, em vários níveis de execução:

/etc/rc0.d # for runlevel 0 for trun off system in all of dirstos
/etc/rc1.d # runlevel 1, for single user in all distros
/etc/rc2.d # runlevel 2 , default runlevel for debian-base dirstros
/etc/rc3.d # runlevel 3, in redhat-base systems, using for everything without graphical mode
/etc/rc4.d # runlevel 4,reserved by system
/etc/rc5.d  #runlevel 5 , in  Redhat base , defualt runlevel
/etc/rc6.d  # for runlevel 6 for reboot system in all of distros

você deve executar:

ln -s /etc/init.d/YOUR_SCRIPT /etc/rcNUMBER.d/{S OR K}NUMYOUR_SCRIPT

como:

ln -s /etc/init.d/apache2 /etc/rc2.d/S99apache2

S OR K : S statrt, K: Kill
NUM before script: priority of run, if you have two scrip such S10squid amd S99apache, At first squid will be run then apache. 

update-rc.d vs chkconfig :

update-rc.d funciona em Debian-base systems e chkconfig funciona em redhat-base systems.

    
por 19.09.2013 / 20:32
0

Você está vinculando ao script no diretório rc3.d , que é o diretório dos serviços iniciados no nível de execução 3. O nível de execução padrão no Ubuntu é 2 IIRC. Então você pode querer mudar sua segunda linha para:

sudo ln -snf ../init.d/gerrit.sh /etc/rc2.d/S90gerrit

É claro que é possível que o servidor tenha sido configurado para iniciar em outro nível de execução. Descubra o nível de execução atual com

who -r
    
por 19.09.2013 / 20:14
0

Antes de mais nada, tente executar seu script manualmente como root (não é necessário reinicializar o sistema):

 /etc/init.d/gerrit start

se isso funcionar e o serviço ainda não iniciar no momento da inicialização, o problema pode ser que, ao tentar executar o script, a variável PATH talvez não seja o esperado. tente definir o PATH para os padrões normais em seu script ( gerrit.sh )

por exemplo.

#!/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin

#...
    
por 19.09.2013 / 23:23