Olá pessoal.
Estou desenvolvendo um software que irá gerenciar versões de softwares e irá iniciar/parar serviços desses softwares para a empresa que trabalho. Na verdade, eu chamo um arquivo pelo Java e ele inicia o serviço.
Acontece que, no Linux, eu consigo chamar esse arquivo para executar porém não consigo receber o retorno do Process para informar se ele iniciou corretamente ou não. Ele para no .waitFor() e não sai dali. Além disso, eu criei um arquivo .sh para realizar uns comandos e executar o arquivo que eu passo por parâmetro. A ideia era que o terminal do Linux fosse aberto para executar o arquivo (assim como acontece no Windows, onde eu chamo um .bat para executar o arquivo e o terminal do Windows abre e fica executando ele).
Resumindo, haveria alguma forma de eu fazer o terminal do Linux abrir e ficar executando o arquivo, ao invés do processo ser executado “por dentro” do Java? Isso sem deixar de usar o arquivo .sh.
Eu preciso disso porque tenho que deixar opção para o usuário matar o processo manualmente, quando e se necessário.
Então para quê o java? Faça tudo em shell script.
Em todo caso, uma pequena googlada resolveria
Eu já procurei no google e até agora não encontrei nada para o meu caso, não abri o tópico aqui de primeira…
Enfim, eu preciso do Java porque o programa roda coisas além de iniciar/parar o serviço desses softwares em específico, esse é apenas um ponto do meu programa.
A única coisa que preciso é que a “janelinha do terminal” seja aberto e fique executando o serviço e, assim, eu possa liberar meu software para executar outros processos. Tentei colocando /bin/bash -c mas a princípio não obtive êxito.
Em último caso, se eu não conseguir, vou criar uma tela de console e vou ficar lendo o InputStream.
O que você quer fazer é algo assim?
Se for, então, só seguir o tópico referenciado.
Eu só precisei criar um script bash (sh) com o comando. Executei e a saída apareceu no terminal do eclipse.
Você pode direcionar isso para um elemento em um jframe, como um JTextArea
Então, essa seria uma forma de fazer. A primeira ideia era abrir a janela nativa do terminal do Linux mesmo, ou seja, não “amarrar” o processo do Linux com o programa Java diretamente, que é o que eu faço hoje no Windows, ele abre a tela do cmd e fica rodando o processo externamente.
A opção que você sugeriu é interessante também, porém eu teria que deixar um jar a parte rodando esse processo de console, para que caso o usuário feche o programa ele continue a enxergar o console do serviço em execução, e esse jar receberia comandos do meu software para iniciar/parar o serviço.