Script de shell para iniciar um novo processo, mas feche a janela do terminal

3

Eu sou novo em scripts de shell. Eu estou escrevendo um script de inicialização que leva um argumento e lança um processo com base no valor do argumento.

Exemplo: quero lançar meu groovyConsole localizado em algum diretório usando o script inicial como este.

sh Starter.sh groovy 

Dentro do script esta é a lógica

if [  = "groovy" ] 
then
    cd Works/Groovy/groovy-1.8.6/bin
    ./groovyConsole
fi

Isso inicia o processo, mas vejo que esse processo é vinculado à janela do terminal. Se eu fechar a janela do terminal, o processo está sendo morto (obviamente). Então eu quero saber se existe uma maneira de executar o comando acima irá executar o script e iniciar o processo, mas fechar a janela do terminal?

    
por Vamsi Emani 07.05.2012 / 17:48

4 respostas

5

Você pode separá-lo de seu processo atual com nohup e &

if [  = "groovy" ] 
then
    cd Works/Groovy/groovy-1.8.6/bin
    nohup ./groovyConsole & 
fi

Isso deixaria o comando groovyConsole em execução até que você o mate. Isso não fecha a janela do terminal, embora você compre isso assim ...

sh Starter.sh groovy && exit
    
por Rinzwind 07.05.2012 / 18:00
2

Eu não sou especialista, mas isso deve funcionar.

if [  = "groovy" ] 
then
    Works/Groovy/groovy-1.8.6/bin/groovyConsole &
    exit
fi

Explicação:

  1. Não há necessidade de CD, basta executá-lo diretamente com o caminho absoluto.
  2. & iniciar aplicativos em segundo plano
  3. sair para sair do terminal
por Web-E 07.05.2012 / 18:02
1

tente alterar ./groovyConsole para ./groovyConsole & amp; e adicione uma saída após a linha

    
por yates 07.05.2012 / 18:00
1

Para que um script de shell feche seu processo pai, ele deve eliminá-lo explicitamente. Também é uma prática muito ruim para fazer isso (porque no caminho você pode estar executando este script em um ambiente diferente do que você está esperando), mas se você realmente quiser, você pode tentar :

#!/bin/sh
if [  = "groovy" ] 
then
    cd Works/Groovy/groovy-1.8.6/bin
    nohup ./groovyConsole &
    kill $PPID
fi
    
por fluffy 07.05.2012 / 20:12

Tags