Autor Tópico: como executar o script abaixo na inicialização do UBUNTU  (Lida 5178 vezes)

Offline Valdirei

  • Usuário Ubuntu
  • *
  • Mensagens: 7
    • Ver perfil
como executar o script abaixo na inicialização do UBUNTU
« Online: 21 de Maio de 2011, 14:50 »
Srs. boa tarde!
Onde devo colocar o script abaixo para que seja executado na inicialização do Ubuntu.
Lembrando que este script esta dentro do diretório do aplicativo e funciona.

#!/bin/sh
Export DISPLAY=:0
JAVA_HOME="./..java"
PATH="$JAVA_HOME/bin:$PATH"
CLASSPATH="$JAVA_HOME/lib"
export JAVA_HOME PATH CLASSPATH
java -cp ./aplicacao.jar br.com.dominio.ras2.mnt.aplicacao.Main

Preciso executa-lo na inicialização do Sistema.

Obrigado!


Offline RonaldoRG

  • Usuário Ubuntu
  • *
  • Mensagens: 659
    • Ver perfil
    • Twitter: @rafas_andrade
Re: como executar o script abaixo na inicialização do UBUNTU
« Resposta #1 Online: 21 de Maio de 2011, 15:12 »
Você dá permissão de execução para o script, depois vá no menu Sistema->Preferências->Aplicativos de sessão clique em adicionar. No campo nome bota o nome do script, no campo comando coloca o caminho onde o script tá salvo.

T+.
Ubuntu 12.04

Offline Valdirei

  • Usuário Ubuntu
  • *
  • Mensagens: 7
    • Ver perfil
Re: como executar o script abaixo na inicialização do UBUNTU
« Resposta #2 Online: 21 de Maio de 2011, 15:52 »
Ronaldo, ja fiz este procedimento, mas não funcionou.
Nada acontece.
Mais alguma dica?

Valeu

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: como executar o script abaixo na inicialização do UBUNTU
« Resposta #3 Online: 21 de Maio de 2011, 16:19 »
Deve ser o caminho ou a permissão... verifique.

Offline RonaldoRG

  • Usuário Ubuntu
  • *
  • Mensagens: 659
    • Ver perfil
    • Twitter: @rafas_andrade
Re: como executar o script abaixo na inicialização do UBUNTU
« Resposta #4 Online: 21 de Maio de 2011, 16:19 »
Pela maneira gráfica é o modo que conheço. Ou o script tá sem permissão de execução ou o caminho pra ele tá errado.

Agora tem maneiras de você colocar ele em determinada pasta do sistema pra ele ser executado junto com o sistema.

Vamos aguardar se aparece alguém com mais orientações.

T+.
Ubuntu 12.04

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: como executar o script abaixo na inicialização do UBUNTU
« Resposta #5 Online: 21 de Maio de 2011, 16:42 »
Srs. boa tarde!
Onde devo colocar o script abaixo para que seja executado na inicialização do Ubuntu.
Lembrando que este script esta dentro do diretório do aplicativo e funciona.

#!/bin/sh
Export DISPLAY=:0
JAVA_HOME="./..java"
PATH="$JAVA_HOME/bin:$PATH"
CLASSPATH="$JAVA_HOME/lib"
export JAVA_HOME PATH CLASSPATH
java -cp ./aplicacao.jar br.com.dominio.ras2.mnt.aplicacao.Main

Preciso executa-lo na inicialização do Sistema.

Obrigado!

Você vai ter que mudar o seu script um cadinho... Dê uma olhada nos scripts em /etc/init.d.

Uma vez que você conseguir responder corretamente ao parâmetro "start" e "stop" no seu script, usar paths completos ao invés de relativos e verificar as permissões para o seu script, crie os links em /etc/rc3.d/ e /etc/rc5.d. Se seu script tem o nome de "myscript", fica assim:

Código: [Selecionar]
ln -s /etc/init.d/myscript /etc/rc3.d/S99myscript
ln -s /etc/init.d/myscript /etc/rc5.d/S99myscript
ln -s /etc/init.d/myscript /etc/rc3.d/K10myscript
ln -s /etc/init.d/myscript /etc/rc5.d/K10myscript

Por que rc3.d e rc5.d? Esses são runlevels. O 3 é para o modo console e o 5 para o modo gráfico. Se você usa a versão "server" do Ubuntu (ao invés da desktop), só precisa do runlevel 3. Ou seja, se não usa o modo gráfico, não precisa do runlevel 5.

Claro que a prioridade 99 para startup foi escolhida ao acaso aqui e a prioridade 10 para Kill também. Escolha os valores adequados de acordo com o seu sistema.

Offline Valdirei

  • Usuário Ubuntu
  • *
  • Mensagens: 7
    • Ver perfil
Re: como executar o script abaixo na inicialização do UBUNTU
« Resposta #6 Online: 22 de Maio de 2011, 14:00 »
FPissara, Obrigado pelas dicas.

Mas sem querer abusar da boa vontade dos colegas.

Não faço a mínima idéia de como colocar estes parâmetros neste script.
Você teria algum exemplo para me passar, pois verifiquei na pasta Init.d e os scripts são muito longos.
E eu sou muito ruim de logica.

Obrigado

Offline sigur

  • Usuário Ubuntu
  • *
  • Mensagens: 1.176
    • Ver perfil
Re: como executar o script abaixo na inicialização do UBUNTU
« Resposta #7 Online: 22 de Maio de 2011, 14:28 »
FPissara, Obrigado pelas dicas.

Mas sem querer abusar da boa vontade dos colegas.

Não faço a mínima idéia de como colocar estes parâmetros neste script.
Você teria algum exemplo para me passar, pois verifiquei na pasta Init.d e os scripts são muito longos.
E eu sou muito ruim de logica.

Obrigado

não entendo desse assunto, mas tentei ler o script pára ver. Será que o problema não está aqui:
Código: [Selecionar]
JAVA_HOME="./..java"
Talvez precise especificar melhor essa pasta, já que está sendo executada por um script salvo em outro local, talvez...

Offline Valdirei

  • Usuário Ubuntu
  • *
  • Mensagens: 7
    • Ver perfil
Re: como executar o script abaixo na inicialização do UBUNTU
« Resposta #8 Online: 22 de Maio de 2011, 14:45 »
Sigur, o problema não esta ai, pois esta linha indica a localização da pasta de contem o Java.
Ou seja a pasta que contem o java esta na mesma pasta onde esta o arquivo .jar.

Mas valeu pela tentativa.

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: como executar o script abaixo na inicialização do UBUNTU
« Resposta #9 Online: 22 de Maio de 2011, 19:27 »
FPissara, Obrigado pelas dicas.

Mas sem querer abusar da boa vontade dos colegas.

Não faço a mínima idéia de como colocar estes parâmetros neste script.
Você teria algum exemplo para me passar, pois verifiquei na pasta Init.d e os scripts são muito longos.
E eu sou muito ruim de logica.

Obrigado

Coloque as variáveis de ambiente PATH, CLASSPATH, JAVA_HOME e DISPLAY no profile do $HOME do usuário sob o qual sua aplicação vai rodar. Se for sob root, coloque em /root/.profile ou /root/.bash_profile, se for em outro usuário coloque em /home/usuario/.profile ou /home/usuario/.bash_profile. Pode colocar também em /etc/profile (mas não é muito legal ficar alterando configurações do sistema!). Não esqueça de exportá-las!

O seu script ficaria mais ou menos assim:

Código: [Selecionar]
#!/bin/bash

# defina o DIRETÓRIO completo da sua aplicação aqui!
DIR_APLICACAO=/usr/local/myapp

# defina o USUÁRIO sob o qual sua aplicação vai rodar aqui!
USER="root"

USE_SU=""
if [[ $USER != "root" ]]; then
  USE_SU="su -l $USER"
fi

start() {
  APPPID=$(ps -e | grep aplicacao.jar | awk '{print $1}')
  if [[ ! -z APPPID ]]; then
    echo Aplicacao aplicacao.jar já está em execução.
    exit 1
  fi

  $USE_SU "java -cp $DIR_APLICACAO/aplicacao.jar br.com.dominio.ras2.mnt.aplicacao.Main"
}

stop() {
  /* Código para PARAR sua aplicação aqui.
      Isso é IMPORTANTE!
      A maneira abaixo NÂO é a melhor possível! */

  APPPID=$(ps -e | grep aplicacao.jar | awk '{print $1}')
  if [[ ! -z APPPID ]]; then
    kill -9 $APPPID
  fi
}

case "$1" in
start)
  start
  ;;
stop)
  stop
  ;;
restart)
  stop
  start
  ;;
*)
  echo "Usage: myservice {start|stop|restart}"
  exit 1
  ;;
esac

exit 0
« Última modificação: 23 de Maio de 2011, 23:48 por fpissarra »

Offline Valdirei

  • Usuário Ubuntu
  • *
  • Mensagens: 7
    • Ver perfil
Re: como executar o script abaixo na inicialização do UBUNTU
« Resposta #10 Online: 03 de Junho de 2011, 22:13 »
Olá, pessoal boa noite!
Demorei, mas retornei.

Fpissarra, Fiz as alterações no seu modelo, porem não obtive sucesso.
Segue o meu script abaixo, se alguem puder ajudar a resolver o problema eu agradeço muito.

#!/bin/bash

# defina o DIRETÓRIO completo da sua aplicação aqui!
PATH=/opt/Anfo/mts/anfo=/usr/local/myapp

# defina o USUÁRIO sob o qual sua aplicação vai rodar aqui!
USER="root"

USE_SU=""
if [[ $USER != "root" ]]; then
  USE_SU="su -l $USER"
fi

start() {
  APPPID=$(ps -e | grep anfo-1.06.jar | awk '{print $1}')
  if [[ ! -z APPPID ]]; then
    echo anfo-1.06.jar já está em execução.
    exit 1
  fi

  $USE_SU "java -cp $/opt/Anfo/mts/anfo/anfo-1.06.jar br.com.itsco.ras2.mts.anfo.Main"
}

stop() {
  /* Código para PARAR sua aplicação aqui.
      Isso é IMPORTANTE!
      A maneira abaixo NÂO é a melhor possível! */

  APPPID=$(ps -e | grep anfo-1.06.jar | awk '{print $1}')
  if [[ ! -z APPPID ]]; then
    kill -9 $APPPID
  fi
}

case "$1" in
start)
  start
  ;;
stop)
  stop
  ;;
restart)
  stop
  start
  ;;
*)
  echo "Usage: myservice {start|stop|restart}"
  exit 1
  ;;
esac

exit 0

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: como executar o script abaixo na inicialização do UBUNTU
« Resposta #11 Online: 03 de Junho de 2011, 23:49 »
PATH está definido errado. E outra coisa que você pode tentar é definir a varíavel JAVA_HOME. Tente isso:

Código: [Selecionar]
PATH = "$PATH:/opt/Anfo/mts/anfo:/usr/local/myapp"

# Mude para o diretório onde o seu java está instalado.
JAVA_HOME = "/usr/share/jdk1.6.0_24"
export JAVA_HOME

Só que é provável que isso não funcione como esperado. Por isso a idéia de definir essas variáveis em /root/.profile ou em /home/user/.bash_profile (se for disparar o JAVA como outro usuário que não o root).

Você pode tirar a variável USE_SU e colocar o usuário que rodará o serviço diretamente:

Código: [Selecionar]
CMD="su -l myuser -c \"$JAVA_HOME/java -cp /opt/Anfo/mts/anfo/anfo-1.06.jar br.com.itsco.ras2.mts.anfo.Main\""
$CMD

Sorry... esqueci do parâmetro -c.

Se for rodar o serviço como root então não precisa do "su":

Código: [Selecionar]
$JAVA_HOME/java -cp /opt/Anfo/mts/anfo/anfo-1.06.jar br.com.itsco.ras2.mts.anfo.Main
Note que, no bash, usa-se $ para referenciar as variáveis... assim, colocar $ no path da aplicação é um erro.

Pode ajudar.
« Última modificação: 04 de Junho de 2011, 00:13 por fpissarra »