Erro com script para iniciar programa automaticamente

1. Erro com script para iniciar programa automaticamente

Gabriel
gamefe

(usa CentOS)

Enviado em 10/10/2011 - 20:51h

Pessoal, estou utilizando a versão 6.0 32bits do CentOS e estou com problemas para iniciar automaticamente 3 programas que estão na raiz de um usuário. Criei três scripts, coloquei na pasta init.d e ainda cadastrei como serviço os 3. Apenas um scrit é iniciado automaticamente, os outros ficam parados, não dá erro nem nada.

Os scripts são estes:


Arquivo Sankhya
#!/bin/sh
#
# sankhya Starts and stops Sankhya
#
# chkconfig: 2345 08 92
# description: Starts and stops Sankhya
#
# config: /home/mgeweb/SanNFe
#
### BEGIN INIT INFO
# Provides: sankhya
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop Sankhya services
# Description: Starts and stops Sankhya
### END INIT INFO

cd /home/mgeweb/SanNFe
./sannfe-service start

exit 0


Arquivo sankhya_prod
#!/bin/sh
#
# sankhya_prod Starts and stops Sankhya
#
# chkconfig: 2345 07 93
# description: Starts and stops Sankhya
#
# config: /home/mgeweb/Downloads/jboss_producao/bin
#
### BEGIN INIT INFO
# Provides: sankhya_prod
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop Sankhya services
# Description: Starts and stops Sankhya
### END INIT INFO

cd /home/mgeweb/jboss_producao/bin
./jboss_init_redhat.sh start

exit 0

Arquivo sankhya_teste
#!/bin/sh
#
# sankhya_prod Starts and stops Sankhya
#
# chkconfig: 2345 07 93
# description: Starts and stops Sankhya
#
# config: /home/mgeweb/Downloads/jboss_producao/bin
#
### BEGIN INIT INFO
# Provides: sankhya_prod
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop Sankhya services
# Description: Starts and stops Sankhya
### END INIT INFO

cd /home/mgeweb/jboss_producao/bin
./jboss_init_redhat.sh start

exit 0

Dei permissão (chomod +x ...), e alterei nas opções de cada um de modo que pudessem ser executados como programa. Os arquivos sankhya_prod e sankhya_teste não iniciam, mas o arquivo sankhya inicia perfeitamente. Se eu for iniciar pelo terminal, tenho de executar primeiro o cd /home/mgeweb/jboss_producao/bin para só então executar o ./jboss_init_redhat.sh start. Se eu executar tudo de uma vez, cd /home/mgeweb/jboss_producao/bin/jboss_init_redhat.sh start não funciona.

Como posso fazer para que os três sejam executados no mesmo arquivo ou que pelo menos seja possível funcionar em arquivos separados?

Alguém pode me ajudar?

Valeu!!


  


2. Re: Erro com script para iniciar programa automaticamente

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 10/10/2011 - 21:57h

gamefe escreveu:

Pessoal, estou utilizando a versão 6.0 32bits do CentOS e estou com problemas para iniciar automaticamente 3 programas que estão na raiz de um usuário. Criei três scripts, coloquei na pasta init.d e ainda cadastrei como serviço os 3. Apenas um scrit é iniciado automaticamente, os outros ficam parados, não dá erro nem nada.

Os scripts são estes:


Arquivo Sankhya


#!/bin/sh
#
# sankhya Starts and stops Sankhya
#
# chkconfig: 2345 08 92
# description: Starts and stops Sankhya
#
# config: /home/mgeweb/SanNFe
#
### BEGIN INIT INFO
# Provides: sankhya
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop Sankhya services
# Description: Starts and stops Sankhya
### END INIT INFO

cd /home/mgeweb/SanNFe
./sannfe-service start

exit 0



Arquivo sankhya_prod


#!/bin/sh
#
# sankhya_prod Starts and stops Sankhya
#
# chkconfig: 2345 07 93
# description: Starts and stops Sankhya
#
# config: /home/mgeweb/Downloads/jboss_producao/bin
#
### BEGIN INIT INFO
# Provides: sankhya_prod
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop Sankhya services
# Description: Starts and stops Sankhya
### END INIT INFO

cd /home/mgeweb/jboss_producao/bin
./jboss_init_redhat.sh start

exit 0


Arquivo sankhya_teste


#!/bin/sh
#
# sankhya_prod Starts and stops Sankhya
#
# chkconfig: 2345 07 93
# description: Starts and stops Sankhya
#
# config: /home/mgeweb/Downloads/jboss_producao/bin
#
### BEGIN INIT INFO
# Provides: sankhya_prod
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop Sankhya services
# Description: Starts and stops Sankhya
### END INIT INFO

cd /home/mgeweb/jboss_producao/bin
./jboss_init_redhat.sh start

exit 0



Dei permissão (chomod +x ...), e alterei nas opções de cada um de modo que pudessem ser executados como programa. Os arquivos sankhya_prod e sankhya_teste não iniciam, mas o arquivo sankhya inicia perfeitamente. Se eu for iniciar pelo terminal, tenho de executar primeiro o cd /home/mgeweb/jboss_producao/bin para só então executar o ./jboss_init_redhat.sh start. Se eu executar tudo de uma vez, cd /home/mgeweb/jboss_producao/bin/jboss_init_redhat.sh start não funciona.

Como posso fazer para que os três sejam executados no mesmo arquivo ou que pelo menos seja possível funcionar em arquivos separados?

Alguém pode me ajudar?

Valeu!!


Vamos lá.
Ainda estou aprendendo este lance de serviços, mas parece que os scripts não podem ter nada de visual ao ser executado ou não vai funcionar.
Quando eu falo visual, falo de estar ecoando um echo por exemplo.

Se já deu as permissões e eles funcionam bem quando você executa na mão, só pode ser permissões de usuário. Se não for permissão de usuário, pode ser que algum deles não esteja trabalhando em background e um está operando e deixando os outros presos. Se estiver falando alguma bobagem, a galera da um grito.

Introduzir um teste antes nos diretórios e arquivos para saber se existem e se tem as devidas permissões é uma boa em cada script.





3. Re: Erro com script para iniciar programa automaticamente

Gabriel
gamefe

(usa CentOS)

Enviado em 10/10/2011 - 22:09h

AprendiNoLinux escreveu:



Vamos lá.
Ainda estou aprendendo este lance de serviços, mas parece que os scripts não podem ter nada de visual ao ser executado ou não vai funcionar.
Quando eu falo visual, falo de estar ecoando um echo por exemplo.

Se já deu as permissões e eles funcionam bem quando você executa na mão, só pode ser permissões de usuário. Se não for permissão de usuário, pode ser que algum deles não esteja trabalhando em background e um está operando e deixando os outros presos. Se estiver falando alguma bobagem, a galera da um grito.

Introduzir um teste antes nos diretórios e arquivos para saber se existem e se tem as devidas permissões é uma boa em cada script.


Valeu pela resposta!

O primeiro script roda perfeitamente no init.d, mas os outros dois nem executando na mão funcionam, a não ser que execute aqueles comandos já citados mas fora do script. Acredito então que o problema esteja no script que eu fiz, isto porque mesmo logado como root e rodando ele na unha, não funciona.

Se tiver qualquer outra ideia me fale!

De todo modo valeu!


4. Re: Erro com script para iniciar programa automaticamente

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 11/10/2011 - 00:19h

Note o seguinte, o terceiro script que você postou é igual ao segundo, pelo menos não vi (a olho pelado) a diferença ;-)

Bom, como não tenho o mesmo ambiente que você, não posso efetuar um teste aqui e ver onde o erro se encontra, mas recomendo que faça o seguinte.

rode seu segundo script chamando ele em um terminal, assim:

bash -x script.sh

ou

/bin/sh -x script.sh

o efeito é o mesmo.

Seu script será executado com os passos que o interpretador faz sendo mostrado na tela, assim fica mais fácil descobrir o que pode está acontecendo.
Abraços


5. Re: Erro com script para iniciar programa automaticamente

Gabriel
gamefe

(usa CentOS)

Enviado em 11/10/2011 - 08:00h

rai3mb escreveu:

Note o seguinte, o terceiro script que você postou é igual ao segundo, pelo menos não vi (a olho pelado) a diferença ;-)

Bom, como não tenho o mesmo ambiente que você, não posso efetuar um teste aqui e ver onde o erro se encontra, mas recomendo que faça o seguinte.

rode seu segundo script chamando ele em um terminal, assim:

bash -x script.sh

ou

/bin/sh -x script.sh

o efeito é o mesmo.

Seu script será executado com os passos que o interpretador faz sendo mostrado na tela, assim fica mais fácil descobrir o que pode está acontecendo.
Abraços


É verdade, não tinha percebido este meu erro, mas na verdade o arquivo 2 e 3 são diferentes apenas em relação a pasta (já que executam bases distintas).

Mas igual eu falei antes, se eu for no terminal e executar os comandos um a um, funciona direitinho, o problema é executar os scripts que eu fiz, já que mesmo executando na mão não funciona, muito menos no init.d.

Valeu pela ajuda!


6. Re: Erro com script para iniciar programa automaticamente

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 11/10/2011 - 10:48h

Mas igual eu falei antes, se eu for no terminal e executar os comandos um a um, funciona direitinho, o problema é executar os scripts que eu fiz, já que mesmo executando na mão não funciona, muito menos no init.d.


Mas você executou os comandos que passei? Que erros aparecem na sua tela?


7. Re: Erro com script para iniciar programa automaticamente

Gabriel
gamefe

(usa CentOS)

Enviado em 11/10/2011 - 14:46h

rai3mb escreveu:

Mas igual eu falei antes, se eu for no terminal e executar os comandos um a um, funciona direitinho, o problema é executar os scripts que eu fiz, já que mesmo executando na mão não funciona, muito menos no init.d.


Mas você executou os comandos que passei? Que erros aparecem na sua tela?


Executei o comando que você me passou e ficou assim:

[root@SankhyaW Downloads]# bash -x sankhya
+ /home/mgeweb/Downloads/SanNFe/sannfe-service start
[root@SankhyaW Downloads]# + /home/mgeweb/Downloads/jboss_producao/bin/jboss_init_redhat.sh start
+ /home/mgeweb/Downloads/jboss_teste/bin/jboss_init_redhat.sh start
JBOSS_CMD_START = cd /home/mgeweb/Downloads/jboss_producao/bin; /home/mgeweb/Downloads/jboss_producao/bin/run.sh -c default -b 0.0.0.0
JBOSS_CMD_START = cd /home/mgeweb/Downloads/jboss_teste/bin; /home/mgeweb/Downloads/jboss_teste/bin/run.sh -c default -b 0.0.0.0
Starting sannfe-service
nohup: appending output to "nohup.out"


No final das contas apenas o sannfe-service iniciou corretamente.
Lembrando que se eu executar o comando cd /home/mgeweb/Downloads/jboss_producao/bin/ e depois ./jboss_init_redhat.sh start o script roda normalmente.

Valeu!


8. Re: Erro com script para iniciar programa automaticamente

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 11/10/2011 - 22:48h

Me parece que esse script que você executou e deu erro e justamente o que faltou você postar.
Por favor poste o conteúdo dele.
Abraços


9. Re: Erro com script para iniciar programa automaticamente

Gabriel
gamefe

(usa CentOS)

Enviado em 12/10/2011 - 11:12h

rai3mb escreveu:

Me parece que esse script que você executou e deu erro e justamente o que faltou você postar.
Por favor poste o conteúdo dele.
Abraços


Bom dia! Desculpe... o arquivo jboss_init_redhat.sh é este aqui:



#!/bin/sh
#
# $Id: jboss_init_redhat.sh 46554 2006-07-28 10:29:13Z dimitris $
#
# JBoss Control Script
#
# To use this script run it as root - it will switch to the specified user
#
# Here is a little (and extremely primitive) startup/shutdown script
# for RedHat systems. It assumes that JBoss lives in /usr/local/jboss,
# it's run by user 'jboss' and JDK binaries are in /usr/local/jdk/bin.
# All this can be changed in the script itself.
#
# Either modify this script for your requirements or just ensure that
# the following variables are set correctly before calling the script.

#define where jboss is - this is the directory containing directories log, bin, conf etc
#JBOSS_HOME=${JBOSS_HOME:-"/usr/local/jboss"}

#define the user under which jboss will run, or use 'RUNASIS' to run as the current user
JBOSS_USER=${JBOSS_USER:-"RUNASIS"}
JBOSS_HOME=/home/mgeweb/jboss_producao;export JBOSS_HOME

#make sure java is in your path
JAVAPTH=${JAVAPTH:-"/usr/local/jdk/bin"}

#configuration to use, usually one of 'minimal', 'default', 'all'
JBOSS_CONF=${JBOSS_CONF:-"default"}

#bind address for jboss services, by default bind to *all* NICs
JBOSS_HOST=${JBOSS_HOST:-"0.0.0.0"}

#define the classpath for the shutdown class
JBOSSCP=${JBOSSCP:-"$JBOSS_HOME/bin/shutdown.jar:$JBOSS_HOME/client/jnet.jar"}

#define the script to use to start jboss
JBOSSSH=${JBOSSSH:-"$JBOSS_HOME/bin/run.sh -c $JBOSS_CONF -b $JBOSS_HOST"}

if [ "$JBOSS_USER" = "RUNASIS" ]; then
SUBIT=""
else
SUBIT="su - $JBOSS_USER -c "
fi

if [ -n "$JBOSS_CONSOLE" -a ! -d "$JBOSS_CONSOLE" ]; then
# ensure the file exists
touch $JBOSS_CONSOLE
if [ ! -z "$SUBIT" ]; then
chown $JBOSS_USER $JBOSS_CONSOLE
fi
fi

if [ -n "$JBOSS_CONSOLE" -a ! -f "$JBOSS_CONSOLE" ]; then
echo "WARNING: location for saving console log invalid: $JBOSS_CONSOLE"
echo "WARNING: ignoring it and using /dev/null"
JBOSS_CONSOLE="/dev/null"
fi

#define what will be done with the console log
JBOSS_CONSOLE=${JBOSS_CONSOLE:-"/dev/null"}

JBOSS_CMD_START="cd $JBOSS_HOME/bin; $JBOSSSH"
JBOSS_CMD_STOP=${JBOSS_CMD_STOP:-"java -classpath $JBOSSCP org.jboss.Shutdown --shutdown"}

if [ -z "`echo $PATH | grep $JAVAPTH`" ]; then
export PATH=$PATH:$JAVAPTH
fi

if [ ! -d "$JBOSS_HOME" ]; then
echo JBOSS_HOME does not exist as a valid directory : $JBOSS_HOME
exit 1
fi

echo JBOSS_CMD_START = $JBOSS_CMD_START

case "$1" in
start)
cd $JBOSS_HOME/bin
if [ -z "$SUBIT" ]; then
eval $JBOSS_CMD_START >${JBOSS_CONSOLE} 2>&1 &
else
$SUBIT "$JBOSS_CMD_START >${JBOSS_CONSOLE} 2>&1 &"
fi
;;
stop)
if [ -z "$SUBIT" ]; then
$JBOSS_CMD_STOP
else
$SUBIT "$JBOSS_CMD_STOP"
fi
;;
restart)
$0 stop
$0 start
;;
*)
echo "usage: $0 (start|stop|restart|help)"
esac


Este arquivo acima que eu tenho de chamar para iniciar o programa e que não estou conseguindo.
As vezes se modificar ele simplesmente para que funcione sem o jboss_init_redhat.sh start já funcione.
O que posso fazer para que ele seja capaz de iniciar com o Linux?

Valeu rai3mb!


10. Re: Erro com script para iniciar programa automaticamente

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 12/10/2011 - 16:41h

CHama o script acima assim:

/bin/sh -x nome_dele.sh

e veja o que aparece na saída do terminal.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts