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 S99jBossServers
rc2.d com link para /etc/rc.d/init.d/jBossServers.sh
e 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.script
neles). 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/inittab
uma 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 initdefault
linha.
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.local
ver 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