Fórum Ubuntu Linux - PT
18 de Junho de 2013, 19:32 *
Olá, Visitante. Faça o login ou registre-se.
Perdeu o seu e-mail de ativação?

Login com nome de usuário, senha e duração da sessão
Notícias: Sejam todos bem-vindos e fiquem atentos às regras de utilização do fórum e política de privacidade.
 
   Home   Ajuda Regras Pesquisa Login Registre-se  
Anúncios
Páginas: [1]   Ir para o fundo
  Imprimir  
Autor Tópico: Ubuntu derrubando processo .jar se inicializado pelo crontab.  (Lida 675 vezes)
tarcisiodpl
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 7


Ver Perfil
« em: 27 de Junho de 2012, 14:37 »

Boa tarde!

Eu tenho um processo (.jar) que toda vez que o Ubuntu inicializa-o automaticamente (através de um crontab, por exemplo.), ele aparece por um instante e logo some da tabela de processos do Ubuntu.
Já se eu rodar ele manualmente, abrindo um terminal e digitanto "java -jar qhdns.jar", o mesmo funciona normalmente. Esse processo acessa um link para saber o IP externo da máquina. Talvez o Ubuntu esteja derrubando esse processo por questão de segurança... não sei. Alguém passou por algo parecido ou tem uma ideia de como resolver?
Registrado
zekkerj
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 14.240


Sua imensa torcida é bem feliz...


Ver Perfil
« Responder #1 em: 27 de Junho de 2012, 16:26 »

Problema 1:
O Cron executa os processos a partir de um ambiente limpo. Já o Java depende de uma série de variáveis definidas no ambiente --- JAVA_HOME, JDK_VERSION, etc, etc.

Assim, quando o processo é executado a partir do Cron, essas variáveis não estão definidas, e o java não executa direito.

Solução: Adicione essas variáveis de ambiente ao script que está chamando o java.

Problema 2:
Se esse jar estiver tentando usar o display gráfico, ele não vai funcionar.

Solução: Arrume outra forma de executá-lo, que não seja pelo cron.
Registrado

Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? Sem Graça
irtigor
Equipe Ubuntu
Usuário Ubuntu
*****
Deslogado Deslogado

Mensagens: 3.286


Delete, delete, delete!


Ver Perfil
« Responder #2 em: 27 de Junho de 2012, 16:33 »

Até dá pra contornar o "Problema 2", mas você vai ter que ser mais especifico.
Registrado
tarcisiodpl
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 7


Ver Perfil
« Responder #3 em: 27 de Junho de 2012, 16:50 »

Oi zekkerj,

Obrigado pelos esclarecimentos, mas acho que não resolve meu caso. Deixe-me explicar melhor para ver se ajuda a desvendar esse mistério.

Eu tenho um scrip na crontab que roda a cada 1 minuto, chamado "gerente.sh". Ele verifica se os 8 processos que dão suporte ao meu sistema estão todos rodando (todos eles são arquivos .jar) . Caso algum deles tenha parado, o "gerente.sh" executa-o novamente. Um desses processos que o "gerente.sh" controla é o "qh.jar".

O que ocorre com o "qh.jar":
A cada minuto ele aparece na tabela de processos ("ps aux") e logo em seguida some. Os demais processos funcionam normalmente. Como ele sumiu, no minuto seguinte ele novamente é executado, aparece na lista de processos e some de novo... e assim por diante. Mas nunca chega a ser completamente executado, até porque ele ficar em loop infinito.

No entando, quando eu digito o mesmo comando que está no script executado pelo crontab no terminal, consigo executá-lo normalmente ("java -jar qh.jar").

Como o "qh.jar" tem como uma de suas atribuições, a cada 1 minuto acessa um link e coletar informações do mesmo, julgo eu que o ubuntu, por questão de segurança, não mantém o "qh.jar" na lista de processos quando ativado automaticamente pelo "gerente.sh".

Bom... é isso Contente

Alguam luz?
Registrado
irtigor
Equipe Ubuntu
Usuário Ubuntu
*****
Deslogado Deslogado

Mensagens: 3.286


Delete, delete, delete!


Ver Perfil
« Responder #4 em: 27 de Junho de 2012, 17:15 »

Você não respondeu se é um programa gráfico ou não. Já olhou os logs do cron? Outra coisa que pode dar uma pista é a saída do stdout e sdterr, se for um script bash, troque "java -jar qh.jar &" por "java -jar qh.jar &> /tmp/log_do_jar &", e depois que for executado olhe o arquivo /tmp/log_do_jar.

Se não identificar o problema, junto com o "log_do_jar", mostre o script e como ele é chamado (qual crontab, por ex).
Registrado
zekkerj
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 14.240


Sua imensa torcida é bem feliz...


Ver Perfil
« Responder #5 em: 27 de Junho de 2012, 17:24 »

Outra dica: tudo que é executado pelo cron e que gere alguma saída é enviado por correio pro usuário que executou o processo. Instale um cliente de correio como o "mutt" e veja as mensagens de correio do seu usuário (ou do root), talvez a dica pra resolver o problema apareça por lá.

sudo apt-get install mutt

mutt


Registrado

Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? Sem Graça
tarcisiodpl
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 7


Ver Perfil
« Responder #6 em: 28 de Junho de 2012, 14:20 »

Não tem nada gráfico nesse arquivo não.
Vou testar essas sugestões para ver o que acontece.
Obrigado!
Obviamente depois eu digo no que deu.
Registrado
tarcisiodpl
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 7


Ver Perfil
« Responder #7 em: 29 de Junho de 2012, 09:33 »

Pessoal... eu fiz o seguinte...
O arquivo "qh.jar" é iniciado pela primeira vez como uma variável de seção (dessa forma o processo não caiu imediatamente!!!).
O arquivo "gerente.sh" está no crontab e é executado a cada minuto. (nenhuma novidade aqui)
O arquivo "gerente.sh" verifica se o qh.jar caiu. Caso sim, ele reinicia o processo. (nenhuma novidade aqui)
E só!

O ubuntu não permitia que o script "gerente.sh" inicializasse pela primeira vez o “qh.jar”, mas uma vez que o “qh.jar” foi inicializado como aplicativo de seção, ele não foi derrubado pelo ubuntu!
A partir daí o “gerente.sh” funciona normalmente, ou seja, o ubuntu passa a não derrubar “qh.jar” quando reinicializado pelo script “gerente.sh”.

Deu para entender?

Obrigado pela ajuda de vocês!

Problema resolvido! Contente
« Última modificação: 29 de Junho de 2012, 09:37 por tarcisiodpl » Registrado
zekkerj
Usuário Ubuntu
*
Deslogado Deslogado

Mensagens: 14.240


Sua imensa torcida é bem feliz...


Ver Perfil
« Responder #8 em: 29 de Junho de 2012, 11:00 »

Tarcisio, pq vc acha que era o Ubuntu que estava derrubando seu aplicativo? A gente não te explicou que o cron tem essas limitações? O aplicativo simplesmente não iniciava pq não tinha o ambiente correto, não era o sistema que derrubava ele...
Registrado

Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? Sem Graça
irtigor
Equipe Ubuntu
Usuário Ubuntu
*****
Deslogado Deslogado

Mensagens: 3.286


Delete, delete, delete!


Ver Perfil
« Responder #9 em: 29 de Junho de 2012, 18:05 »

É, nada colabora com essa visão de que o Ubuntu derrubava. A saída stderr do aplicativo deve confirmar o que o zekkerj falou, mas você não mostrou.
Registrado
Páginas: [1]   Ir para o topo
  Imprimir  
 
Ir para:  

Powered by MySQL Powered by PHP Tema desenvolvido por FaBMak e n3t0
Powered by SMF 1.1.18 | SMF © 2006-2009, Simple Machines
© 2013 Canonical Ltd. Ubuntu e Canonical são marcas registradas da Canonical Ltd.
XHTML 1.0 válido! CSS válido!