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

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

Sou muito 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 sistema operacional Linux e quero executar algum aplicativo jboss quando o sistema reiniciar/travar

Eu adicionei S99jBossServersrc2.d com link para /etc/rc.d/init.d/jBossServers.she dei permissão total (777) parajBossServers.sh

o conteúdo 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 2 caminhos foram referenciados em

iniciar() e parar()

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

Responder1

Olhe parainiciarque é o iniciador de processo tradicional e executa scripts em /etc/init.d, /etc/rc1.d, etc. e /etc/rc.local, que provavelmente é o local que você deseja.

Algumas distribuições usamsubir na vidaem vez disso - em caso afirmativo, consulte a documentação 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.

Responder2

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

Runlevel 2 parece incomum para mim. 3 deve ser normal para um Linux sem GUI. Qual distribuição e versão você está usando?

Responder3

Procure /etc/inittabuma linha como id:3:initdefault:. O número provavelmente será 3 ou 5, mas poderá ser 2 ou 4. O número nessa linha é o nível de execução padrão. Provavelmente não é 2, então seus scripts em rc2.d não serão executados.

Coloque seu script no diretório rcN.d que corresponde ao número na initdefaultlinha.

Em princípio, rc.local é uma escolha melhor, mas rc.local varia tanto de distro para distro (às vezes é um diretório, às vezes é um script, às vezes nem está configurado) que sem conhecer sua distro é mais fácil simplesmente você o colocou no nível de execução correto. Você pode tentar man rc.localver o que isso diz no seu sistema. Se o seu sistema suportar rc.local como directroy, coloque seu script lá e não se preocupe com os níveis de execução.

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

Responder4

Adicionando um script de inicialização

Este método funciona com Red Hat, Fedora, Ubuntu (instale o pacote chkconfig e serviço), Suse.

Você deve copiar 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

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

sudo chkconfig add jBossServers.sh

Agora, lendo seu script, este script já contém as informações para chkconfig em relação aos níveis de execução e prioridade. Então você está bem. Na próxima vez que você reiniciar, o JBoos será iniciado.

Mas você poderia tentar começar agora

sudo service jBossServers.sh start

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

sudo /sbin/chkconfig add jBossServers.sh
sudo /sbin/service jBossServers.sh start

informação relacionada