Executa um arquivo sh na inicialização da máquina

6

Sou bastante novo no Linux e quero saber o que fazer para iniciar um arquivo .sh na inicialização da máquina. Basicamente, eu tenho uma máquina servidora com o Linux OS e quero rodar algum aplicativo do jboss quando o sistema reiniciar / travar

Eu adicionei S99jBossServers em rc2.d com link para /etc/rc.d/init.d/jBossServers.sh e dei permissão total (777) para jBossServers.sh

o conteúdo em jBossServers.sh é o seguinte

#!/bin/sh
#
# chkconfig: 2345 80 30 
# description: 
#

RETVAL=0

start () {
    /root/batch/startSikkimCA.sh
    /root/batch/startSikkimSp.sh
}

stop () {
    /root/batch/stopSikkimCA.sh
    /root/batch/stopSikkimSp.sh
    RETVAL=$?
}
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        start
        ;;
    *)
        start
;;
        RETVAL=$?
esac
exit $RETVAL

Não tenho certeza se está correto ou não, mas os dois caminhos foram mencionados em

start() and stop()

estão corretos, mas o aplicativo ainda não inicia na reinicialização da máquina.

    
por Varun 29.03.2012 / 14:03

6 respostas

12

Veja init , que é o iniciador de processo tradicional, e executa scripts em /etc/init.d , /etc/rc1.d , etc. e /etc/rc.local , que é provavelmente o local desejado.

Algumas distribuições usam upstart - em caso afirmativo, veja os documentos para isso.

Em ambos os casos, os caminhos exatos podem variar de acordo com a distribuição, mas isso deve ser suficiente para você começar.

    
por 29.03.2012 / 14:12
1

Tente verificar se os seus scripts estão sendo iniciados (por exemplo, mas colocando touch /var/tmp/startup.script neles). Todos os comandos em seus scripts estão no patch de pesquisa durante a inicialização?

Nível de execução 2 parece incomum para mim. 3 deve ser normal para um Linux sem GUI. Que distribuição e versão você está usando?

    
por 19.04.2012 / 21:17
0

Em /etc/inittab , procure uma linha como id:3:initdefault: . O número provavelmente será 3 ou 5, mas pode ser 2 ou 4. O número nessa linha é o nível de execução padrão. O mais provável é que não seja 2, portanto seus scripts no rc2.d não serão executados.

Coloque seu script no diretório rcN.d que corresponda ao número na linha initdefault .

Em princípio, rc.local é uma escolha melhor, mas rc.local varia muito de distro a distro (às vezes é um diretório, às vezes é um script, às vezes não é configurado) que sem conhecer sua distribuição é mais fácil apenas ter você colocá-lo no runlevel correto. Você pode tentar man rc.local e ver o que isso diz no seu sistema. Se o seu sistema suporta rc.local como diretório, coloque seu script lá e não se preocupe com os runlevels.

Além disso, certifique-se de que seu script seja de propriedade de root e tenha permissões 755 (se você quiser que alguém possa executá-lo) ou 744.

    
por 22.04.2012 / 19:09
0

Você pode usar um trabalho cron para isso. O formato é

@reboot myjob.sh   

Se necessário, você pode colocar o cron job no root crontab, mas, se possível, colocá-lo em um cronjob do usuário.

    
por 23.04.2012 / 00:27
0

Adicionando um script de inicialização

Este método funciona com o Red Hat, Fedora, Ubuntu (instala o pacote chkconfig e service), Suse.

Você deve copiar o seu script em /etc/init.d (é o diretório apropriado ou um link para o diretório apropriado para que funcione da mesma forma)

sudo cp jBossServers.sh /etc/init.d/
sudo chmod 0755 /etc/init.d/jBossServers.sh

Depois, você precisa adicioná-lo ao processo de inicialização do sistema. Em vez de criar todos os links necessários, use o chkconfig (instale o pacote primeiro no Ubuntu)

sudo chkconfig add jBossServers.sh

Agora, ler o script que está seguindo esse script já contém as informações do chkconfig sobre os runlevels e a prioridade. Então você está bem. Da próxima vez que você reinicializar, o JBoos será iniciado.

Mas você pode tentar começar agora mesmo

sudo service jBossServers.sh start

Nota: se o seu sistema reclamar que não encontra o chkconfig ou o serviço, tente ligar com o / sbin / antes. Exemplo

sudo /sbin/chkconfig add jBossServers.sh
sudo /sbin/service jBossServers.sh start
    
por 24.04.2012 / 17:15
0

Você pode ativar o script de execução na inicialização do Linux criando um link simbólico em /etc/rc<runlevel>.d ; <runlevel> é numérico e obtido com este comando (runlevel) Isso significa que o nível de execução do seu sistema Linux.

Por exemplo:

# runlevel

saída:

N 2

Para configurar customScript com priorty 99:

ln -s /etc/init.d/customScript /etc/rc2.d/S99customScript
  • S == > começar
  • 99 == > prioridade de inicialização
por 23.04.2012 / 17:25

Tags