Como escrever um script de inicialização que irá executar um script de início existente?

2

Estou tentando entender o processo init .

Eu tenho um script que lança 3 processos em segundo plano (2 scripts de shell e um aplicativo java). Funciona muito bem a partir da linha de comando.

Gostaria de executar esse script na inicialização.

/etc/init.d/skeleton não fazia sentido para mim porque estava procurando por um único processo. E a maioria dos scripts init parece tão complexa que estou ficando meio que perdida.

Tudo o que eu realmente quero fazer é:

#!/bin/bash
/opt/myapp/bin/my_start_script

Se isso aconteceu na inicialização, eu ficaria muito feliz.

    
por David Parks 26.10.2011 / 00:44

2 respostas

3

Você pode adicionar seu link ao aplicativo Startup Applications no Ubuntu se quiser usar a GUI. A desvantagem disso é que ele só será executado quando você fizer login na GUI (ou seja, não para outros usuários, e não se você não fizer login no ambiente do Ubuntu Desktop).

Usando a linha de comando, você pode fazer com que um script seja executado antes que o Ubuntu Desktop seja carregado.

Para fazer isso, torne seu script executável, copie-o para /etc/init.d e crie um link simbólico para o script em /etc/rc2.d , se desejar executá-lo no nível de execução multiusuário padrão (nível de execução 2). Você deve renomeá-lo com um S seguido da ordem em que você quer que ele seja executado, correspondente aos outros links de lá.

  1. Torne o script executável:

    sudo chmod u+x myscript.sh

  2. Copie para /etc/init.d :

    sudo cp myscript /etc/init.d

  3. Crie um symlink em rc2.d:

    cd /etc/rc2.d

    sudo ln -s /etc/init.d/myscript.sh

  4. Renomeie de acordo com o esquema de nomenclatura:

    sudo mv myscript.sh S70myscript.sh

Para mais informações, consulte os arquivos LEIA-ME em /etc/init.d e /etc/rc2.d .

    
por Omegamormegil 26.10.2011 / 02:35
4

Use o Upstart já que os scripts do System V Init estão sendo reprovados e simplificados.

Simplesmente coloque este arquivo my_script.conf em / etc / init

# Start when pc starts up
start on runlevel [2345]
# Stop when pc shuts down 
stop on runlevel [016]

# Start Script 
exec my_start_script
# Stop Script 
pre-stop my_stop_script

O script Pre Stop conterá código para matar o seu processo 3 e é opcional, quando o serviço for parado, sigterm será enviado para o processo my_start_script, mas dependendo do seu script, ele já pode ter sido encerrado.

Você pode testar seu novo serviço executando sudo service my_script start e sudo service my_script stop

    
por Ciaran Liedeman 26.10.2011 / 03:26